diff options
author | Yorke Lee <yorkelee@google.com> | 2015-05-26 17:28:57 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-26 17:28:57 +0000 |
commit | 44ed26cfc052715acc7e3be088cb49b733ddef35 (patch) | |
tree | c33839a5b05d8880826eab54ff62609dc9fba1af /src/com/android/dialer/list | |
parent | 2e1bfd309fa4371d329e9741aa65da90a375109c (diff) | |
parent | c16ea5ad67bf454158b364dec2f26c95a879c350 (diff) |
Merge "Handle runtime permissions in Dialer" into mnc-dev
Diffstat (limited to 'src/com/android/dialer/list')
4 files changed, 79 insertions, 4 deletions
diff --git a/src/com/android/dialer/list/AllContactsFragment.java b/src/com/android/dialer/list/AllContactsFragment.java index 94efc4869..eaa5cc808 100644 --- a/src/com/android/dialer/list/AllContactsFragment.java +++ b/src/com/android/dialer/list/AllContactsFragment.java @@ -29,6 +29,7 @@ import com.android.contacts.common.list.ContactEntryListAdapter; import com.android.contacts.common.list.ContactEntryListFragment; import com.android.contacts.common.list.ContactListFilter; import com.android.contacts.common.list.DefaultContactListAdapter; +import com.android.contacts.common.util.PermissionsUtil; import com.android.contacts.common.util.ViewUtil; import com.android.dialer.R; import com.android.dialer.util.DialerUtils; @@ -60,7 +61,18 @@ public class AllContactsFragment extends ContactEntryListFragment<ContactEntryLi } @Override + protected void startLoading() { + if (PermissionsUtil.hasContactsPermissions(getActivity())) { + super.startLoading(); + } + } + + @Override protected ContactEntryListAdapter createListAdapter() { + if (!PermissionsUtil.hasContactsPermissions(getActivity())) { + return new EmptyContactsListAdapter(getActivity()); + } + final DefaultContactListAdapter adapter = new DefaultContactListAdapter(getActivity()) { @Override protected void bindView(View itemView, int partition, Cursor cursor, int position) { diff --git a/src/com/android/dialer/list/EmptyContactsListAdapter.java b/src/com/android/dialer/list/EmptyContactsListAdapter.java new file mode 100644 index 000000000..54bd4771f --- /dev/null +++ b/src/com/android/dialer/list/EmptyContactsListAdapter.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.list; + +import android.content.Context; +import android.content.CursorLoader; + +import com.android.contacts.common.list.ContactEntryListAdapter; + +/** + * Used to display an empty contact list when we don't have the permissions to read contacts. + */ +public class EmptyContactsListAdapter extends ContactEntryListAdapter { + + public EmptyContactsListAdapter(Context context) { + super(context); + } + + @Override + public String getContactDisplayName(int position) { + return null; + } + + @Override + public void configureLoader(CursorLoader loader, long directoryId) { + loader.setUri(null); + } + + @Override + public int getCount() { + return 0; + } +} diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java index c314478ca..f86c0e5cf 100644 --- a/src/com/android/dialer/list/SearchFragment.java +++ b/src/com/android/dialer/list/SearchFragment.java @@ -37,6 +37,7 @@ import com.android.contacts.common.list.ContactEntryListAdapter; import com.android.contacts.common.list.ContactListItemView; import com.android.contacts.common.list.OnPhoneNumberPickerActionListener; import com.android.contacts.common.list.PhoneNumberPickerFragment; +import com.android.contacts.common.util.PermissionsUtil; import com.android.contacts.common.util.ViewUtil; import com.android.contacts.commonbind.analytics.AnalyticsUtil; import com.android.dialer.dialpad.DialpadFragment.ErrorDialogFragment; @@ -287,4 +288,14 @@ public class SearchFragment extends PhoneNumberPickerFragment { listView.getPaddingEnd(), listView.getPaddingBottom()); } + + @Override + protected void startLoading() { + if (PermissionsUtil.hasContactsPermissions(getActivity())) { + super.startLoading(); + } else if (TextUtils.isEmpty(getQueryString())) { + // Clear out any existing call shortcuts. + getAdapter().setQueryString(null); + } + } } diff --git a/src/com/android/dialer/list/SpeedDialFragment.java b/src/com/android/dialer/list/SpeedDialFragment.java index e72b25059..541cdf6e1 100644 --- a/src/com/android/dialer/list/SpeedDialFragment.java +++ b/src/com/android/dialer/list/SpeedDialFragment.java @@ -23,7 +23,6 @@ import android.app.Fragment; import android.app.LoaderManager; import android.content.CursorLoader; import android.content.Loader; -import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.net.Uri; @@ -43,12 +42,12 @@ import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; import android.widget.ListView; -import android.widget.RelativeLayout; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactTileLoaderFactory; import com.android.contacts.common.list.ContactTileView; import com.android.contacts.common.list.OnPhoneNumberPickerActionListener; +import com.android.contacts.common.util.PermissionsUtil; import com.android.dialer.R; import com.android.dialer.util.DialerUtils; @@ -194,7 +193,9 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener, Trace.beginSection(TAG + " onResume"); super.onResume(); - getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad(); + if (PermissionsUtil.hasContactsPermissions(getActivity())) { + getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad(); + } Trace.endSection(); } @@ -286,7 +287,11 @@ public class SpeedDialFragment extends Fragment implements OnItemClickListener, // Use initLoader() instead of restartLoader() to refraining unnecessary reload. // This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will // be called, on which we'll check if "all" contacts should be reloaded again or not. - getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, mContactTileLoaderListener); + if (PermissionsUtil.hasContactsPermissions(activity)) { + getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, mContactTileLoaderListener); + } else { + setEmptyViewVisibility(true); + } } /** |