diff options
author | Yorke Lee <yorkelee@google.com> | 2015-07-18 00:15:11 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-18 00:15:11 +0000 |
commit | 1a8b653ae41f2ab6da8dfc5b98700aaba56a38d8 (patch) | |
tree | 151d26cb62bd41e3aa99f277111ace7ac3c55513 /src | |
parent | 58c0c78de8042739e51d4609813cfd46463b53a5 (diff) | |
parent | 791799c680b5d86148d69241ecc51ad843256c88 (diff) |
am 791799c6: am 10f597e8: am c0177b9b: am 594bb6f4: am 7e1a6855: Refresh all contacts fragment when permission granted
* commit '791799c680b5d86148d69241ecc51ad843256c88':
Refresh all contacts fragment when permission granted
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/dialer/list/AllContactsFragment.java | 28 | ||||
-rw-r--r-- | src/com/android/dialer/list/SpeedDialFragment.java | 15 |
2 files changed, 42 insertions, 1 deletions
diff --git a/src/com/android/dialer/list/AllContactsFragment.java b/src/com/android/dialer/list/AllContactsFragment.java index 0de84347e..0f31ff88f 100644 --- a/src/com/android/dialer/list/AllContactsFragment.java +++ b/src/com/android/dialer/list/AllContactsFragment.java @@ -19,6 +19,9 @@ package com.android.dialer.list; import static android.Manifest.permission.READ_CONTACTS; import android.app.Activity; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; import android.content.Loader; import android.content.pm.PackageManager; import android.database.Cursor; @@ -52,6 +55,17 @@ public class AllContactsFragment extends ContactEntryListFragment<ContactEntryLi private EmptyContentView mEmptyListView; + /** + * Listen to broadcast events about permissions in order to be notified if the READ_CONTACTS + * permission is granted via the UI in another fragment. + */ + private BroadcastReceiver mReadContactsPermissionGrantedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + reloadData(); + } + }; + public AllContactsFragment() { setQuickContactEnabled(false); setAdjustSelectionBoundsEnabled(true); @@ -76,6 +90,20 @@ public class AllContactsFragment extends ContactEntryListFragment<ContactEntryLi } @Override + public void onStart() { + super.onStart(); + PermissionsUtil.registerPermissionReceiver(getActivity(), + mReadContactsPermissionGrantedReceiver, READ_CONTACTS); + } + + @Override + public void onStop() { + PermissionsUtil.unregisterPermissionReceiver(getActivity(), + mReadContactsPermissionGrantedReceiver); + super.onStop(); + } + + @Override protected void startLoading() { if (PermissionsUtil.hasPermission(getActivity(), READ_CONTACTS)) { super.startLoading(); diff --git a/src/com/android/dialer/list/SpeedDialFragment.java b/src/com/android/dialer/list/SpeedDialFragment.java index ebfc72da0..324caefb6 100644 --- a/src/com/android/dialer/list/SpeedDialFragment.java +++ b/src/com/android/dialer/list/SpeedDialFragment.java @@ -25,6 +25,7 @@ import android.app.Fragment; import android.app.LoaderManager; import android.content.CursorLoader; import android.content.Loader; +import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.Rect; import android.net.Uri; @@ -64,6 +65,8 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener, PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener, EmptyContentView.OnEmptyViewActionButtonClickedListener { + private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1; + /** * By default, the animation code assumes that all items in a list view are of the same height * when animating new list items into view (e.g. from the bottom of the screen into view). @@ -470,10 +473,20 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener, } if (!PermissionsUtil.hasPermission(activity, READ_CONTACTS)) { - requestPermissions(new String[] {READ_CONTACTS}, 0); + requestPermissions(new String[] {READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST_CODE); } else { // Switch tabs ((HostInterface) activity).showAllContactsTab(); } } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, + int[] grantResults) { + if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) { + if (grantResults.length == 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) { + PermissionsUtil.notifyPermissionGranted(getActivity(), READ_CONTACTS); + } + } + } } |