aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/ContactsContentObserver.java
diff options
context:
space:
mode:
authorMohammadinamul Sheik <inamul@google.com>2015-07-16 00:52:32 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-16 00:52:32 +0000
commit7cac5f1d946f4e07a2bfd29dc72c2ffdfa324644 (patch)
tree85aab20d4da9aa12bdd409ce04541db25de1e2f4 /java/src/com/android/inputmethod/latin/ContactsContentObserver.java
parent3d9a36c555d8811f21a086d6496d754d02434730 (diff)
parentbdac27417cac7a3914a2cbf3ef76b4545b49f6fa (diff)
downloadlatinime-7cac5f1d946f4e07a2bfd29dc72c2ffdfa324644.tar.gz
latinime-7cac5f1d946f4e07a2bfd29dc72c2ffdfa324644.tar.xz
latinime-7cac5f1d946f4e07a2bfd29dc72c2ffdfa324644.zip
am bdac2741: am 641e2bd3: am 1c47b2d8: am 992144a8: am 60415866: [LatinIME] Support MNC permissions.
* commit 'bdac27417cac7a3914a2cbf3ef76b4545b49f6fa': [LatinIME] Support MNC permissions.
Diffstat (limited to 'java/src/com/android/inputmethod/latin/ContactsContentObserver.java')
-rw-r--r--java/src/com/android/inputmethod/latin/ContactsContentObserver.java28
1 files changed, 25 insertions, 3 deletions
diff --git a/java/src/com/android/inputmethod/latin/ContactsContentObserver.java b/java/src/com/android/inputmethod/latin/ContactsContentObserver.java
index 872e4c8fc..6103a8296 100644
--- a/java/src/com/android/inputmethod/latin/ContactsContentObserver.java
+++ b/java/src/com/android/inputmethod/latin/ContactsContentObserver.java
@@ -16,6 +16,7 @@
package com.android.inputmethod.latin;
+import android.Manifest;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
@@ -25,6 +26,7 @@ import android.util.Log;
import com.android.inputmethod.latin.ContactsManager.ContactsChangedListener;
import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.permissions.PermissionsUtil;
import com.android.inputmethod.latin.utils.ExecutorUtils;
import java.util.ArrayList;
@@ -35,10 +37,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
*/
public class ContactsContentObserver implements Runnable {
private static final String TAG = "ContactsContentObserver";
- private static AtomicBoolean sRunning = new AtomicBoolean(false);
private final Context mContext;
private final ContactsManager mManager;
+ private final AtomicBoolean mRunning = new AtomicBoolean(false);
private ContentObserver mContentObserver;
private ContactsChangedListener mContactsChangedListener;
@@ -49,6 +51,13 @@ public class ContactsContentObserver implements Runnable {
}
public void registerObserver(final ContactsChangedListener listener) {
+ if (!PermissionsUtil.checkAllPermissionsGranted(
+ mContext, Manifest.permission.READ_CONTACTS)) {
+ Log.i(TAG, "No permission to read contacts. Not registering the observer.");
+ // do nothing if we do not have the permission to read contacts.
+ return;
+ }
+
if (DebugFlags.DEBUG_ENABLED) {
Log.d(TAG, "registerObserver()");
}
@@ -66,7 +75,14 @@ public class ContactsContentObserver implements Runnable {
@Override
public void run() {
- if (!sRunning.compareAndSet(false /* expect */, true /* update */)) {
+ if (!PermissionsUtil.checkAllPermissionsGranted(
+ mContext, Manifest.permission.READ_CONTACTS)) {
+ Log.i(TAG, "No permission to read contacts. Not updating the contacts.");
+ unregister();
+ return;
+ }
+
+ if (!mRunning.compareAndSet(false /* expect */, true /* update */)) {
if (DebugFlags.DEBUG_ENABLED) {
Log.d(TAG, "run() : Already running. Don't waste time checking again.");
}
@@ -78,10 +94,16 @@ public class ContactsContentObserver implements Runnable {
}
mContactsChangedListener.onContactsChange();
}
- sRunning.set(false);
+ mRunning.set(false);
}
boolean haveContentsChanged() {
+ if (!PermissionsUtil.checkAllPermissionsGranted(
+ mContext, Manifest.permission.READ_CONTACTS)) {
+ Log.i(TAG, "No permission to read contacts. Marking contacts as not changed.");
+ return false;
+ }
+
final long startTime = SystemClock.uptimeMillis();
final int contactCount = mManager.getContactCount();
if (contactCount > ContactsDictionaryConstants.MAX_CONTACTS_PROVIDER_QUERY_LIMIT) {