我在我的Android应用中实现了Android运行时权限。我也能够检查运行时是否允许或拒绝权限。但是我想知道,如果用户首先拒绝权限,然后通过设置中的应用权限菜单允许它。 (假设一个服务一直运行,以检查是否发生任何改变)从设置中检查Android运行时权限
-1
A
回答
0
我用下面的辅助类检查,并请求权限
public final class Permissions {
public static final int INTERNAL_STORAGE_REQUEST_CODE = 1;
public static final int FINE_LOCATION_REQUEST_CODE = 2;
private static final int COARSE_LOCATION_REQUEST_CODE = 3;
public static final String READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE;
public static final String ACCESS_FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
public static final String ACCESS_COARSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
public static boolean havePermissionFor(Context context, String permission) {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
ActivityCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}
public static void showPermissionDetails(String message, Context context, DialogInterface.OnClickListener okListener) {
M.showAlert(context, "Request for permission", message, "ALLOW", "DON'T ALLOW", okListener, null, false);
}
public static void requestForPermissions(Activity activity, String[] permissions, int permissionRequestCode) {
ActivityCompat.requestPermissions(activity, permissions, permissionRequestCode);
}
public static void requestPermissionForFragment(Fragment fragment, String[] permissions, int permissionRequestCode) {
fragment.requestPermissions(permissions, permissionRequestCode);
}
public static boolean shouldShowPermissionRationale(Activity activity, String permission) {
return ActivityCompat.shouldShowRequestPermissionRationale(activity, permission);
}
public ArrayList<String> getRequiredPermissions(Context context, String... permissions) {
ArrayList<String> requiredPermissionsList = new ArrayList<>();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return requiredPermissionsList;
for (String permission : permissions) {
if (!havePermissionFor(context, permission))
requiredPermissionsList.add(permission);
}
return requiredPermissionsList;
}
}
2
为I am also able to check if a permission is allowed or denied at runtime
一个小把戏。保存此详细信息(拒绝或允许),然后如果用户从设置中更改了某些内容,则可以轻松比较应用程序权限功能中的以前的详细信息。
例如:您的保存的详细信息被拒绝,然后您通过设置允许通过设置后,如果您在权限功能中打开您的应用程序,您可以看到您保存的详细信息被拒绝,但现在您有权限,反之亦然。
+0
但问题是,我的应用程序只打开一次,然后它总是在后台运行:( –
相关问题
- 1. 检查Android设备中应用程序的运行时权限
- 2. Android运行时位置服务权限
- 3. 无法在Android中设置运行时权限
- 4. 重置运行时权限
- 5. Android检查权限
- 6. 禁用Android M的运行时权限检查root
- 7. 在运行时如何检查Android安全权限?
- 8. 在Android中撤销运行时权限
- 9. Android中的运行时权限
- 10. Android:函数没有在运行时权限在Android中运行
- 11. Android Facebook 4.0:检查权限
- 12. Android如何检查权限?
- 13. Android Marshmallow检查权限
- 14. 在编译时或运行时检查访问权限吗?
- 15. 是否必须在Activity中处理Android 6.0运行时权限检查回调?
- 16. 处理Android运行时权限
- 17. Android运行时权限不起作用
- 18. 使用SDK的Android运行时权限
- 19. 在运行时询问权限Android M +
- 20. android:运行时请求权限
- 21. 在运行时Android权限与片段
- 22. Android M运行时权限问题
- 23. react-native询问Android运行时权限
- 24. 位置权限检查和授权
- 25. 从Android片段调用时,权限被拒绝。使用权限设置为
- 26. 检查Android运行时
- 27. 如何在运行时检查手机锁定时的授权权限?
- 28. 在运行时检查权限不显示
- 29. 如何在运行时检查权限而不抛出SecurityException?
- 30. 检查,如果权限已被Android中
您可以随时在需要时检查权限,而用户正在使用您的应用程序。为什么要检测后台权限的更改? – Sony