diff options
author | 2015-07-16 00:42:13 +0000 | |
---|---|---|
committer | 2015-07-16 00:42:13 +0000 | |
commit | bdac27417cac7a3914a2cbf3ef76b4545b49f6fa (patch) | |
tree | 8cabb3a61d743506973fa946b69a4e3f604f675a /java/src/com/android/inputmethod/latin/settings | |
parent | 1fc9af7705b400b84bf123b4c14bbb8aaaa4f396 (diff) | |
parent | 641e2bd3152be76b604ae24dcb6b736fd8853d16 (diff) | |
download | latinime-bdac27417cac7a3914a2cbf3ef76b4545b49f6fa.tar.gz latinime-bdac27417cac7a3914a2cbf3ef76b4545b49f6fa.tar.xz latinime-bdac27417cac7a3914a2cbf3ef76b4545b49f6fa.zip |
am 641e2bd3: am 1c47b2d8: am 992144a8: am 60415866: [LatinIME] Support MNC permissions.
* commit '641e2bd3152be76b604ae24dcb6b736fd8853d16':
[LatinIME] Support MNC permissions.
Diffstat (limited to 'java/src/com/android/inputmethod/latin/settings')
-rw-r--r-- | java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java | 50 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/settings/SettingsActivity.java | 10 |
2 files changed, 58 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java index d28e703fe..dfe899ece 100644 --- a/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java +++ b/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java @@ -16,17 +16,23 @@ package com.android.inputmethod.latin.settings; +import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Build; import android.os.Bundle; import android.preference.Preference; +import android.preference.SwitchPreference; +import android.text.TextUtils; import com.android.inputmethod.dictionarypack.DictionarySettingsActivity; import com.android.inputmethod.latin.R; +import com.android.inputmethod.latin.permissions.PermissionsManager; +import com.android.inputmethod.latin.permissions.PermissionsUtil; import com.android.inputmethod.latin.userdictionary.UserDictionaryList; import com.android.inputmethod.latin.userdictionary.UserDictionarySettings; @@ -45,12 +51,17 @@ import java.util.TreeSet; * - Suggest Contact names * - Next-word suggestions */ -public final class CorrectionSettingsFragment extends SubScreenFragment { +public final class CorrectionSettingsFragment extends SubScreenFragment + implements SharedPreferences.OnSharedPreferenceChangeListener, + PermissionsManager.PermissionsResultCallback { + private static final boolean DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS = false; private static final boolean USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS = DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS || Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2; + private SwitchPreference mUseContactsPreference; + @Override public void onCreate(final Bundle icicle) { super.onCreate(icicle); @@ -76,6 +87,9 @@ public final class CorrectionSettingsFragment extends SubScreenFragment { if (ri == null) { overwriteUserDictionaryPreference(editPersonalDictionary); } + + mUseContactsPreference = (SwitchPreference) findPreference(Settings.PREF_KEY_USE_CONTACTS_DICT); + turnOffUseContactsIfNoPermission(); } private void overwriteUserDictionaryPreference(final Preference userDictionaryPreference) { @@ -101,4 +115,38 @@ public final class CorrectionSettingsFragment extends SubScreenFragment { userDictionaryPreference.setFragment(UserDictionaryList.class.getName()); } } + + @Override + public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) { + if (!TextUtils.equals(key, Settings.PREF_KEY_USE_CONTACTS_DICT)) { + return; + } + if (!sharedPreferences.getBoolean(key, false)) { + // don't care if the preference is turned off. + return; + } + + // Check for permissions. + if (PermissionsUtil.checkAllPermissionsGranted( + getActivity() /* context */, Manifest.permission.READ_CONTACTS)) { + return; // all permissions granted, no need to request permissions. + } + + PermissionsManager.get(getActivity() /* context */).requestPermissions( + this /* PermissionsResultCallback */, + getActivity() /* activity */, + Manifest.permission.READ_CONTACTS); + } + + @Override + public void onRequestPermissionsResult(boolean allGranted) { + turnOffUseContactsIfNoPermission(); + } + + private void turnOffUseContactsIfNoPermission() { + if (!PermissionsUtil.checkAllPermissionsGranted( + getActivity(), Manifest.permission.READ_CONTACTS)) { + mUseContactsPreference.setChecked(false); + } + } } diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java index 9975277e4..a7d157a6b 100644 --- a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java +++ b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java @@ -16,6 +16,7 @@ package com.android.inputmethod.latin.settings; +import com.android.inputmethod.latin.permissions.PermissionsManager; import com.android.inputmethod.latin.utils.FragmentUtils; import com.android.inputmethod.latin.utils.StatsUtils; import com.android.inputmethod.latin.utils.StatsUtilsManager; @@ -24,9 +25,11 @@ import android.app.ActionBar; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceActivity; +import android.support.v4.app.ActivityCompat; import android.view.MenuItem; -public final class SettingsActivity extends PreferenceActivity { +public final class SettingsActivity extends PreferenceActivity + implements ActivityCompat.OnRequestPermissionsResultCallback { private static final String DEFAULT_FRAGMENT = SettingsFragment.class.getName(); public static final String EXTRA_SHOW_HOME_AS_UP = "show_home_as_up"; @@ -77,4 +80,9 @@ public final class SettingsActivity extends PreferenceActivity { public boolean isValidFragment(final String fragmentName) { return FragmentUtils.isValidFragment(fragmentName); } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + PermissionsManager.get(this).onRequestPermissionsResult(requestCode, permissions, grantResults); + } } |