aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMenny Even Danan <menny@evendanan.net>2016-03-14 00:31:44 +0000
committerMenny Even Danan <menny@evendanan.net>2016-03-14 00:31:44 +0000
commitd1c4a7bf1b575f00d17784090922d67c76431f89 (patch)
tree40b03a799e51f27266d1147b89b6847619b0001f /src
parent85cbaf11b458781275ab873ad8bb4b9464a1ef3c (diff)
downloadAnySoftKeyboard-d1c4a7bf1b575f00d17784090922d67c76431f89.tar.gz
AnySoftKeyboard-d1c4a7bf1b575f00d17784090922d67c76431f89.tar.bz2
updating permissions API
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/DictionariesFragment.java4
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/MainSettingsActivity.java31
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/setup/WizardPermissionsFragment.java39
-rw-r--r--src/main/java/com/anysoftkeyboard/ui/settings/wordseditor/UserDictionaryEditorFragment.java48
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;