summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/list
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2015-05-26 17:28:57 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-26 17:28:57 +0000
commit44ed26cfc052715acc7e3be088cb49b733ddef35 (patch)
treec33839a5b05d8880826eab54ff62609dc9fba1af /src/com/android/dialer/list
parent2e1bfd309fa4371d329e9741aa65da90a375109c (diff)
parentc16ea5ad67bf454158b364dec2f26c95a879c350 (diff)
Merge "Handle runtime permissions in Dialer" into mnc-dev
Diffstat (limited to 'src/com/android/dialer/list')
-rw-r--r--src/com/android/dialer/list/AllContactsFragment.java12
-rw-r--r--src/com/android/dialer/list/EmptyContactsListAdapter.java47
-rw-r--r--src/com/android/dialer/list/SearchFragment.java11
-rw-r--r--src/com/android/dialer/list/SpeedDialFragment.java13
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);
+ }
}
/**