有人知道MIUI 11中的“后台启动”权限在哪里吗?

10

我无法在MIUI 11红米Note 6 Pro手机上启动活动,出现以下错误:

  

com.android.server.am.ExtraActivityManagerService:MIUILOG-权限被拒绝的活动

我找到了一些解决方案,例如打开“后台启动”权限。但是在MIUI 11中我找不到类似的设置。实际上我对这个问题一无所知。提前感谢。

1个回答

17

当应用程序停止时,我在从BroadcastReceiver启动活动方面遇到类似的问题。

1) 您可以在设置中找到您的应用程序并允许权限“后台启动”
2) 如果您需要以编程方式允许权限,请尝试打开应用程序设置。

Xiaomi

此代码将打开应用程序权限设置,您应该在其中允许"后台启动"

Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR");
intent.setClassName("com.miui.securitycenter",
"com.miui.permcenter.permissions.PermissionsEditorActivity");
intent.putExtra("extra_pkgname", getPackageName());
startActivity(intent);


没有系统封装的设备

这段代码将会打开应用程序设置,在那里您应该打开权限并允许 "在后台启动" 权限。

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

了解 Android 设置意图的更多信息: 如何以编程方式在应用设置中打开应用程序权限窗口

您还可以从 GitHub 中检查代码,以便使用不同系统包装器(如 flyme、miui、oppo)处理权限: https://github.com/zhaozepeng/FloatWindowPermission

希望这能帮到您!

如果您有其他解决此问题的选项,请在评论中回复...


2
解决方案很好。有没有办法以编程方式授予权限?我看到Facebook做到了这一点。因为当我在Facebook应用程序中安装应用程序时,默认情况下会授予权限。 - Bhavin Chauhan
1
@BhavinChauhan 像 Facebook 这样的应用程序默认拥有更多的特权。Google 的政策强制开发人员使用默认工具在运行时请求权限,而其他系统包装器(如 MIUI)的权限通常不会提供。我们必须在对话框中描述使用所请求权限的意图,并引导用户进入设置。如果用户拒绝了权限请求,关闭应用程序或限制其某些功能也是一个好的做法。 - lincollincol
1
@BhavinChauhan 在我的应用程序(闹钟)中,我使用了设备管理员和通知。在此处查看如何实现设备管理员-> https://dev59.com/oGvXa4cB1Zd3GeqPKpVj或在此处阅读有关设备管理员的更多信息-> https://developer.android.com/reference/android/app/admin/DeviceAdminReceiver因此,我在我的广播接收器中锁定屏幕,然后显示通知。在此处查看我的代码片段-> https://github.com/lincollincol/AlarmClock-for-programmers/blob/master/app/src/main/java/linc/com/alarmclockforprogrammers/infrastructure/service/AlarmReceiver.java - lincollincol
2
@BhavinChauhan 有没有办法知道权限是否已被授予? - Raj Gohel
2
因为如果用户已经授予权限,我们就不应该再请求权限。 - Raj Gohel
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接