Fix request permission

This commit is contained in:
tehcneko 2021-01-28 20:08:35 +08:00
parent 205090bdce
commit d9612a733c
4 changed files with 41 additions and 10 deletions

View File

@ -51,22 +51,22 @@ public class App extends Application implements Application.ActivityLifecycleCal
} }
} }
public static boolean checkPermission(int code) { public static int checkPermission(int code) {
try { try {
if (!Shizuku.isPreV11() && Shizuku.getVersion() >= 11) { if (!Shizuku.isPreV11() && Shizuku.getVersion() >= 11) {
if (Shizuku.checkSelfPermission() == PERMISSION_GRANTED) { if (Shizuku.checkSelfPermission() == PERMISSION_GRANTED) {
return true; return 0;
} else if (Shizuku.shouldShowRequestPermissionRationale()) { } else if (Shizuku.shouldShowRequestPermissionRationale()) {
return false; return -1;
} else { } else {
Shizuku.requestPermission(code); Shizuku.requestPermission(code);
return false; return -1;
} }
} }
} catch (Throwable e) { } catch (Throwable e) {
e.printStackTrace(); e.printStackTrace();
} }
return false; return -2;
} }
public static App getInstance() { public static App getInstance() {

View File

@ -126,7 +126,15 @@ public class CompileDialogFragment extends AppCompatDialogFragment {
int type = arguments.getInt(KEY_TYPE); int type = arguments.getInt(KEY_TYPE);
appInfo = arguments.getParcelable(KEY_APP_INFO); appInfo = arguments.getParcelable(KEY_APP_INFO);
type = type * 10 + 1; type = type * 10 + 1;
onRequestPermissionsResult(type, App.checkPermission(type) ? PERMISSION_GRANTED : PERMISSION_DENIED); int result = App.checkPermission(type);
switch (result){
case 0:
onRequestPermissionsResult(type, PERMISSION_GRANTED);
break;
case -2:
onRequestPermissionsResult(type, PERMISSION_DENIED);
break;
}
} else { } else {
dismissAllowingStateLoss(); dismissAllowingStateLoss();
} }

View File

@ -126,13 +126,29 @@ public class CompileUtil {
public static void compileAllDexopt(Activity activity) { public static void compileAllDexopt(Activity activity) {
sActivity = activity; sActivity = activity;
int type = CompileType.DEXOPT_ALL.ordinal() * 10 + 1; int type = CompileType.DEXOPT_ALL.ordinal() * 10 + 1;
onRequestPermissionsResult(type, App.checkPermission(type) ? PERMISSION_GRANTED : PERMISSION_DENIED); int result = App.checkPermission(type);
switch (result){
case 0:
onRequestPermissionsResult(type, PERMISSION_GRANTED);
break;
case -2:
onRequestPermissionsResult(type, PERMISSION_DENIED);
break;
}
} }
public static void compileAllSpeed(Activity activity) { public static void compileAllSpeed(Activity activity) {
sActivity = activity; sActivity = activity;
int type = CompileType.SPEED_ALL.ordinal() * 10 + 1; int type = CompileType.SPEED_ALL.ordinal() * 10 + 1;
onRequestPermissionsResult(type, App.checkPermission(type) ? PERMISSION_GRANTED : PERMISSION_DENIED); int result = App.checkPermission(type);
switch (result){
case 0:
onRequestPermissionsResult(type, PERMISSION_GRANTED);
break;
case -2:
onRequestPermissionsResult(type, PERMISSION_DENIED);
break;
}
} }
private static void compilePackageInBg(FragmentManager fragmentManager, private static void compilePackageInBg(FragmentManager fragmentManager,

View File

@ -61,8 +61,15 @@ public class RebootUtil {
public static void reboot(RebootType mode) { public static void reboot(RebootType mode) {
onRequestPermissionsResult(mode.ordinal(), App.checkPermission(mode.ordinal()) ? PERMISSION_GRANTED : PERMISSION_DENIED); int result = App.checkPermission(mode.ordinal());
switch (result){
case 0:
onRequestPermissionsResult(mode.ordinal(), PERMISSION_GRANTED);
break;
case -2:
onRequestPermissionsResult(mode.ordinal(), PERMISSION_DENIED);
break;
}
} }
private static void rebootWithShell(RebootType mode) { private static void rebootWithShell(RebootType mode) {