ActivityRequestPermissions.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package epson.print;
  2. import android.annotation.TargetApi;
  3. import android.app.Activity;
  4. import android.app.AlertDialog;
  5. import android.content.Context;
  6. import android.content.DialogInterface;
  7. import android.content.Intent;
  8. import android.net.Uri;
  9. import android.os.Build;
  10. import android.os.Bundle;
  11. import android.support.p000v4.app.ActivityCompat;
  12. import android.support.p000v4.app.Fragment;
  13. import java.io.Serializable;
  14. import java.util.ArrayList;
  15. import epson.print.Util.EPLog;
  16. public class ActivityRequestPermissions extends Activity {
  17. private static final int APPLICATION_DETAILS_SETTINGS = 0;
  18. private static final int ID_ENABLED_PERMISSION = 1;
  19. private static final String KEY_PERMISSIONS = "KEY_PERMISSIONS";
  20. private static final String TAG = "ActivityRequestPermission";
  21. Permission mPermissionObject;
  22. /* access modifiers changed from: protected */
  23. @TargetApi(23)
  24. public void onCreate(Bundle bundle) {
  25. super.onCreate(bundle);
  26. Intent intent = getIntent();
  27. if (intent != null) {
  28. mPermissionObject = (Permission) intent.getSerializableExtra(KEY_PERMISSIONS);
  29. requestPermissions(mPermissionObject.getPermissionKey(), 1);
  30. return;
  31. }
  32. finish();
  33. }
  34. public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
  35. super.onRequestPermissionsResult(i, strArr, iArr);
  36. if (i == 1) {
  37. int i2 = 0;
  38. for (int i3 = 0; i3 < strArr.length; i3++) {
  39. if (mPermissionObject.getPermissionKey(i3).equals(strArr[i3])) {
  40. if (iArr[i3] == 0) {
  41. EPLog.m305d(TAG, "PERMISSION_GRANTED " + strArr[i3]);
  42. i2++;
  43. } else if (!ActivityCompat.shouldShowRequestPermissionRationale(this, strArr[i3])) {
  44. PermisionAlertDialog(strArr[i3], true, mPermissionObject.getDialogTitle(i3, 1), mPermissionObject.getDialogMessage(i3, 1));
  45. } else {
  46. PermisionAlertDialog(strArr[i3], false, mPermissionObject.getDialogTitle(i3, 0), mPermissionObject.getDialogMessage(i3, 0));
  47. }
  48. }
  49. }
  50. if (i2 == strArr.length) {
  51. setResult(-1);
  52. finish();
  53. }
  54. }
  55. }
  56. /* access modifiers changed from: protected */
  57. @TargetApi(23)
  58. public void onActivityResult(int i, int i2, Intent intent) {
  59. if (i == 0) {
  60. requestPermissions(mPermissionObject.getPermissionKey(), 1);
  61. }
  62. super.onActivityResult(i, i2, intent);
  63. }
  64. @TargetApi(23)
  65. public static boolean checkPermission(Context context, String[] strArr) {
  66. for (String checkSelfPermission : strArr) {
  67. if (context.checkSelfPermission(checkSelfPermission) != 0) {
  68. return false;
  69. }
  70. }
  71. return true;
  72. }
  73. public static void requestPermission(Activity activity, Permission permission, int i) {
  74. Intent intent = new Intent(activity, ActivityRequestPermissions.class);
  75. intent.putExtra(KEY_PERMISSIONS, permission);
  76. activity.startActivityForResult(intent, i);
  77. }
  78. public static void requestPermission(Fragment fragment, Permission permission, int i) {
  79. Intent intent = new Intent(fragment.getActivity(), ActivityRequestPermissions.class);
  80. intent.putExtra(KEY_PERMISSIONS, permission);
  81. fragment.startActivityForResult(intent, i);
  82. }
  83. private void startApplicationManagementActivity(String str) {
  84. Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
  85. intent.setData(Uri.parse("package:" + str));
  86. startActivityForResult(intent, 0);
  87. }
  88. public static boolean isRuntimePermissionSupported() {
  89. return Build.VERSION.SDK_INT >= 23;
  90. }
  91. private void PermisionAlertDialog(final String str, final boolean z, String str2, String str3) {
  92. new AlertDialog.Builder(this).setCancelable(false).setTitle(str2).setMessage(str3).setPositiveButton(R.string.str_ok, new DialogInterface.OnClickListener() {
  93. @TargetApi(23)
  94. public void onClick(DialogInterface dialogInterface, int i) {
  95. if (z) {
  96. ActivityRequestPermissions activityRequestPermissions = ActivityRequestPermissions.this;
  97. activityRequestPermissions.startApplicationManagementActivity(activityRequestPermissions.getPackageName());
  98. return;
  99. }
  100. ActivityRequestPermissions.this.requestPermissions(new String[]{str}, 1);
  101. }
  102. }).setNegativeButton(R.string.str_cancel, new DialogInterface.OnClickListener() {
  103. public void onClick(DialogInterface dialogInterface, int i) {
  104. ActivityRequestPermissions.this.finish();
  105. }
  106. }).show();
  107. }
  108. public static class Permission implements Serializable {
  109. static final int DIALOG_MESSAGE = 2;
  110. static final int DIALOG_TITLE = 1;
  111. static final int PARAMETER_SIZE = 3;
  112. static final int PERMISSION_KEY = 0;
  113. private ArrayList<String[][]> mArrayPermission = new ArrayList<>();
  114. public Permission(String str, @Nullable String[] strArr, @Nullable String[] strArr2) {
  115. addPermission(str, strArr, strArr2);
  116. }
  117. public void addPermission(String str, @Nullable String[] strArr, @Nullable String[] strArr2) {
  118. mArrayPermission.add(new String[][]{new String[]{str}, strArr, strArr2});
  119. }
  120. public ArrayList<String[][]> getArrayPermission() {
  121. return mArrayPermission;
  122. }
  123. public int getPermissionSize() {
  124. return mArrayPermission.size();
  125. }
  126. public String[] getPermissionKey() {
  127. int size = mArrayPermission.size();
  128. String[] strArr = new String[size];
  129. for (int i = 0; i < size; i++) {
  130. strArr[i] = getPermissionKey(i);
  131. }
  132. return strArr;
  133. }
  134. public String getPermissionKey(int i) {
  135. try {
  136. return mArrayPermission.get(i)[0][0];
  137. } catch (NullPointerException unused) {
  138. return null;
  139. }
  140. }
  141. public String getDialogTitle(int i, int i2) {
  142. try {
  143. return mArrayPermission.get(i)[1][i2];
  144. } catch (NullPointerException unused) {
  145. return null;
  146. }
  147. }
  148. public String getDialogMessage(int i, int i2) {
  149. try {
  150. return mArrayPermission.get(i)[2][i2];
  151. } catch (NullPointerException unused) {
  152. return null;
  153. }
  154. }
  155. }
  156. public static class DialogParameter {
  157. public static String setMessage2(Fragment fragment, String str) {
  158. return setMessage2(fragment.getContext(), str);
  159. }
  160. public static String setMessage3A(Fragment fragment, String str, String str2) {
  161. return setMessage3A(fragment.getContext(), str, str2);
  162. }
  163. public static String setMessage2(Context context, String str) {
  164. return getMessageTop(context, str) + "\n \n" + context.getString(R.string.permission_dialog_message_bottom);
  165. }
  166. public static String setMessage3A(Context context, String str, String str2) {
  167. return getMessageTop(context, str) + "\n \n" + String.format(context.getString(R.string.permission_dialog_message_prompt_setting), new Object[]{str2});
  168. }
  169. private static String getMessageTop(Context context, String str) {
  170. return context.getString(R.string.permission_dialog_message_top) + "\n \n" + str;
  171. }
  172. }
  173. }