首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Intent.ACTION_MAIN需要在某些设备上安装android.permission.MANAGE_USERS?

为什么Intent.ACTION_MAIN需要在某些设备上安装android.permission.MANAGE_USERS?
EN

Stack Overflow用户
提问于 2021-11-20 15:46:55
回答 1查看 30关注 0票数 1
代码语言:javascript
运行
复制
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

上面的代码偶尔会抛出以下异常:

代码语言:javascript
运行
复制
Class: java.lang.SecurityException
 Stack trace: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.amazon.kindle.otter.oobe/.OobeHomeActivity } from ProcessRecord{bbef452 4630:net.my.app/u0a5} (pid=4630, uid=10005) requires android.permission.MANAGE_USERS
    at android.os.Parcel.createException(Parcel.java:1950)
    at android.os.Parcel.readException(Parcel.java:1918)
    at android.os.Parcel.readException(Parcel.java:1868)
    at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3755)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1669)
    at android.app.Activity.startActivityForResult(Activity.java:4599)
    at androidx.activity.ComponentActivity.startActivityForResult(SourceFile:2)
    at android.app.Activity.startActivityForResult(Activity.java:4557)
    at androidx.activity.ComponentActivity.startActivityForResult(SourceFile:1)
    at android.app.Activity.startActivity(Activity.java:4918)
    at android.app.Activity.startActivity(Activity.java:4886)

这种情况只存在于少数设备上。有人能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-20 16:38:54

您尝试启动的活动是com.amazon.kindle.otter.oobe/.OobeHomeActivity

快速搜索引擎显示,"otter“是第一代Kindle Fire。这可能并不准确,因为你认为这款设备运行的是Android 9,而Fire是一款有十年历史的设备。所以,这个场景已经很奇怪了。

如果这确实是某种形式的Amazon Fire设备,则它们不受兼容性定义文档(CDD)的约束,该文档控制希望发货Play Store和Play服务的制造商。因此,没有要求他们有一个可以通过ACTION_MAIN/CATEGORY_HOME Intent使用的启动程序,或者一个可以由任意应用程序启动的启动程序。

在这种情况下,com.amazon.kindle.otter.oobe/.OobeHomeActivity感觉像是一次性的“开箱即用体验”活动,而不是真正的启动器。为什么这款设备会与ACTION_MAIN/CATEGORY_HOME捆绑在一起,这一点还不清楚。

如果您还没有这样做,请将您的startActivity()调用包装在try/catch中,这样SecurityException就不会使您的应用程序崩溃。如果你通过安卓的亚马逊AppStore发布你的应用,你可能会看到他们是否有一个特定于Fire的Intent的文档来访问启动器。否则,当这种情况发生时,你将不得不接受“优雅地降级”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70047456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档