diff options
| author | Menny Even Danan <menny@evendanan.net> | 2016-03-14 00:31:44 +0000 |
|---|---|---|
| committer | Menny Even Danan <menny@evendanan.net> | 2016-03-14 00:31:44 +0000 |
| commit | d1c4a7bf1b575f00d17784090922d67c76431f89 (patch) | |
| tree | 40b03a799e51f27266d1147b89b6847619b0001f /src | |
| parent | 85cbaf11b458781275ab873ad8bb4b9464a1ef3c (diff) | |
| download | AnySoftKeyboard-d1c4a7bf1b575f00d17784090922d67c76431f89.tar.gz AnySoftKeyboard-d1c4a7bf1b575f00d17784090922d67c76431f89.tar.bz2 | |
updating permissions API
Diffstat (limited to 'src')
4 files changed, 68 insertions, 54 deletions
diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/DictionariesFragment.java b/src/main/java/com/anysoftkeyboard/ui/settings/DictionariesFragment.java index 4d0829509..f5f238a41 100644 --- a/src/main/java/com/anysoftkeyboard/ui/settings/DictionariesFragment.java +++ b/src/main/java/com/anysoftkeyboard/ui/settings/DictionariesFragment.java @@ -17,13 +17,11 @@ package com.anysoftkeyboard.ui.settings; -import android.Manifest; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.support.v4.preference.PreferenceFragment; -import com.anysoftkeyboard.PermissionsRequestCodes; import com.anysoftkeyboard.ui.settings.wordseditor.AbbreviationDictionaryEditorFragment; import com.anysoftkeyboard.ui.settings.wordseditor.UserDictionaryEditorFragment; import com.menny.android.anysoftkeyboard.R; @@ -65,7 +63,7 @@ public class DictionariesFragment extends PreferenceFragment implements Preferen if (((CheckBoxPreference) preference).isChecked()) { //user enabled Contacts! //ensuring we have permission to use it - activity.startPermissionsRequestAsActivity(PermissionsRequestCodes.CONTACTS.getRequestCode(), Manifest.permission.READ_CONTACTS); + activity.startContactsPermissionRequest(); } } return false; diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/MainSettingsActivity.java b/src/main/java/com/anysoftkeyboard/ui/settings/MainSettingsActivity.java index d6f27abe5..90d6b95ad 100644 --- a/src/main/java/com/anysoftkeyboard/ui/settings/MainSettingsActivity.java +++ b/src/main/java/com/anysoftkeyboard/ui/settings/MainSettingsActivity.java @@ -41,12 +41,12 @@ import com.anysoftkeyboard.PermissionsRequestCodes; import com.anysoftkeyboard.keyboards.KeyboardFactory; import com.anysoftkeyboard.theme.KeyboardTheme; import com.anysoftkeyboard.theme.KeyboardThemeFactory; -import com.anysoftkeyboard.ui.settings.setup.SetUpKeyboardWizardFragment; import com.menny.android.anysoftkeyboard.AnyApplication; import com.menny.android.anysoftkeyboard.R; import net.evendanan.chauffeur.lib.experiences.TransitionExperiences; import net.evendanan.chauffeur.lib.permissions.PermissionsFragmentChauffeurActivity; +import net.evendanan.chauffeur.lib.permissions.PermissionsRequest; import net.evendanan.pushingpixels.EdgeEffectHacker; public class MainSettingsActivity extends PermissionsFragmentChauffeurActivity { @@ -262,7 +262,7 @@ public class MainSettingsActivity extends PermissionsFragmentChauffeurActivity { switch (which) { case DialogInterface.BUTTON_POSITIVE: if (ActivityCompat.shouldShowRequestPermissionRationale(MainSettingsActivity.this, Manifest.permission.READ_CONTACTS)) { - startPermissionsRequestAsActivity(PermissionsRequestCodes.CONTACTS.getRequestCode(), Manifest.permission.READ_CONTACTS); + startContactsPermissionRequest(); } else { startAppPermissionsActivity(); } @@ -300,18 +300,25 @@ public class MainSettingsActivity extends PermissionsFragmentChauffeurActivity { if (mAlertDialog != null && mAlertDialog.isShowing()) mAlertDialog.dismiss(); mAlertDialog = builder.create(); mAlertDialog.show(); - } else if (requestCode == PermissionsRequestCodes.CONTACTS.getRequestCode() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - //this is a special case: - //if Contacts was granted, and the current fragment is SetUpKeyboardWizardFragment, then we'll - //refresh its fragments - Fragment currentFragment = getSupportFragmentManager().findFragmentById(getFragmentRootUiElementId()); - if (currentFragment instanceof SetUpKeyboardWizardFragment) { - ((SetUpKeyboardWizardFragment)currentFragment).refreshFragmentsUi(); - } } } - public void startPermissionsRequestAsActivity(int requestCode, String permission) { - startPermissionsRequest(requestCode, permission); + public void startContactsPermissionRequest() { + startPermissionsRequest(new PermissionsRequest.PermissionsRequestBase(PermissionsRequestCodes.CONTACTS.getRequestCode(), Manifest.permission.READ_CONTACTS) { + @Override + public void onPermissionsGranted() { + + } + + @Override + public void onPermissionsDenied() { + + } + + @Override + public void onUserDeclinedPermissionsCompletely() { + + } + }); } } diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/setup/WizardPermissionsFragment.java b/src/main/java/com/anysoftkeyboard/ui/settings/setup/WizardPermissionsFragment.java index 9fc623f47..33690980c 100644 --- a/src/main/java/com/anysoftkeyboard/ui/settings/setup/WizardPermissionsFragment.java +++ b/src/main/java/com/anysoftkeyboard/ui/settings/setup/WizardPermissionsFragment.java @@ -2,25 +2,17 @@ package com.anysoftkeyboard.ui.settings.setup; import android.Manifest; import android.content.ActivityNotFoundException; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.preference.PreferenceManager; -import android.provider.Settings; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.FragmentActivity; import android.support.v4.content.ContextCompat; import android.support.v4.content.SharedPreferencesCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; import com.anysoftkeyboard.PermissionsRequestCodes; import com.anysoftkeyboard.ui.settings.MainSettingsActivity; @@ -28,8 +20,25 @@ import com.anysoftkeyboard.utils.Log; import com.menny.android.anysoftkeyboard.AnyApplication; import com.menny.android.anysoftkeyboard.R; +import net.evendanan.chauffeur.lib.permissions.PermissionsRequest; + public class WizardPermissionsFragment extends WizardPageBaseFragment implements View.OnClickListener { + private final PermissionsRequest mContactsPermissionRequest = + new PermissionsRequest.PermissionsRequestBase(PermissionsRequestCodes.CONTACTS.getRequestCode(), + Manifest.permission.READ_CONTACTS) { + @Override + public void onPermissionsGranted() { + refreshWizardPager(); + } + + @Override + public void onPermissionsDenied() {/*no-op*/} + + @Override + public void onUserDeclinedPermissionsCompletely() {/*no-op - Main-Activity handles this case*/} + }; + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.keyboard_setup_wizard_page_permissions_layout, container, false); @@ -55,25 +64,13 @@ public class WizardPermissionsFragment extends WizardPageBaseFragment implements } @Override - public void onPause() { - super.onPause(); - Log.d("GGGG", "onPause"); - } - - @Override - public void onResume() { - super.onResume(); - Log.d("GGGG", "onResume"); - } - - @Override public void onClick(View v) { MainSettingsActivity activity = (MainSettingsActivity) getActivity(); if (activity == null) return; switch (v.getId()) { case R.id.ask_for_permissions_action: - activity.startPermissionsRequestAsActivity(PermissionsRequestCodes.CONTACTS.getRequestCode(), Manifest.permission.READ_CONTACTS); + activity.startPermissionsRequest(mContactsPermissionRequest); break; case R.id.disable_contacts_dictionary: SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity); diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java index 0868b4082..ca293951b 100644 --- a/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java +++ b/src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java @@ -22,11 +22,9 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; -import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.Rect; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBar; @@ -56,6 +54,7 @@ import com.anysoftkeyboard.utils.Log; import com.menny.android.anysoftkeyboard.R; import net.evendanan.chauffeur.lib.FragmentChauffeurActivity; +import net.evendanan.chauffeur.lib.permissions.PermissionsRequest; import net.evendanan.pushingpixels.AsyncTaskWithProgressWindow; import java.util.ArrayList; @@ -103,6 +102,33 @@ public class UserDictionaryEditorFragment extends Fragment mSelectedLocale = null; } }; + private final PermissionsRequest.PermissionsRequestBase mWriteToStoragePermissionRequest = new PermissionsRequest.PermissionsRequestBase( + PermissionsRequestCodes.STORAGE_WRITE.getRequestCode(), Manifest.permission.WRITE_EXTERNAL_STORAGE) { + @Override + public void onPermissionsGranted() { + backupToStorage(); + } + + @Override + public void onPermissionsDenied() {/*no-op*/} + + @Override + public void onUserDeclinedPermissionsCompletely() {/*no-op*/} + }; + + private final PermissionsRequest.PermissionsRequestBase mReadFromStoragePermissionRequest = new PermissionsRequest.PermissionsRequestBase( + PermissionsRequestCodes.STORAGE_READ.getRequestCode(), Manifest.permission.READ_EXTERNAL_STORAGE) { + @Override + public void onPermissionsGranted() { + restoreFromStorage(); + } + + @Override + public void onPermissionsDenied() {/*no-op*/} + + @Override + public void onUserDeclinedPermissionsCompletely() {/*no-op*/} + }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -151,14 +177,10 @@ public class UserDictionaryEditorFragment extends Fragment return true; case R.id.backup_words: //we required Storage permission - if (!mainSettingsActivity.startPermissionsRequestFromFragment(this, PermissionsRequestCodes.STORAGE_WRITE.getRequestCode(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - backupToStorage(); - } + mainSettingsActivity.startPermissionsRequest(mWriteToStoragePermissionRequest); return true; case R.id.restore_words: - if (!mainSettingsActivity.startPermissionsRequestFromFragment(this, PermissionsRequestCodes.STORAGE_READ.getRequestCode(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - restoreFromStorage(); - } + mainSettingsActivity.startPermissionsRequest(mReadFromStoragePermissionRequest); return true; default: return super.onOptionsItemSelected(item); @@ -208,16 +230,6 @@ public class UserDictionaryEditorFragment extends Fragment mCurrentDictionary = null; } - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == PermissionsRequestCodes.STORAGE_WRITE.getRequestCode() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - backupToStorage(); - } else if (requestCode == PermissionsRequestCodes.STORAGE_READ.getRequestCode() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - restoreFromStorage(); - } - } - void fillLanguagesSpinner() { new UserWordsEditorAsyncTask(this, true) { private ArrayAdapter<DictionaryLocale> mAdapter; |
