diff options
author | Yorke Lee <yorkelee@google.com> | 2015-07-17 15:24:26 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2015-07-17 15:24:26 -0700 |
commit | 7e1a68556c419c4b9b1eda9247e80262615fa809 (patch) | |
tree | c7e323999268a258d22c334e92254d1b7b4354fa /src | |
parent | 91ecb13620df69c3865754290cfcdcf20b2968d5 (diff) |
Refresh all contacts fragment when permission granted
Bug: 22174668
Change-Id: I6d23fb76c6b67093ee1193fba45bd20baa50a68f
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); + } + } + } } |