Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
上面的代码偶尔会抛出以下异常:
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)
这种情况只存在于少数设备上。有人能解释一下吗?
发布于 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
的文档来访问启动器。否则,当这种情况发生时,你将不得不接受“优雅地降级”。
https://stackoverflow.com/questions/70047456
复制相似问题