提问人:Bob Redity 提问时间:10/19/2022 更新时间:10/19/2022 访问量:394
java.lang.SecurityException:权限拒绝:启动 Intent - 打开设置屏幕
java.lang.SecurityException: Permission Denial: starting Intent - open settings screen
问:
我想从我的应用程序中打开设置屏幕。
我已经制作了应用程序exported = true
Manifest
除此之外,我确保在运行时选择正确的配置app
从这篇文章 -> Android - java.lang.SecurityException:权限拒绝:启动意图
但仍然有这个错误
java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.android.settings/.SubSettings } from ProcessRecord{a973751 21451:com.myapp.android.main/u0a157} (pid=21451, uid=10157) not exported from uid 1000
我启动活动的代码是
val intentTwo = Intent()
intentTwo.setClassName("com.android.settings",
"com.android.settings.SubSettings")
startActivity(intentTwo)
我也试过这个
val intentOne = Intent()
intentOne.setComponent(ComponentName("com.android.settings",
"com.android.settings.SubSettings"))
startActivity(intentOne)
对此有什么想法吗?
答:
0赞
CommonsWare
10/19/2022
#1
SubSettings
不会从“设置”应用中导出,至少对于 AOSP 和 Android 13 是这样。对于以这种方式配置的任何设备,您都无法启动此活动。
另外,请记住,设备制造商经常修改系统设置应用程序。因此,甚至不需要任何设备拥有 ,更不用说可以由外部应用程序启动了。SubSettings
而且,请注意,这似乎没有多大作用。SubSettings
评论
0赞
Dan Baruch
10/19/2022
从我通过浏览大量屏幕所看到的情况来看,SubSettings 似乎是一个存根,您可以导航到多个内部设置页面,但如果您在 adb 中查找它的“路径”或其他东西,您最终会在最后获得 subSetting,所以我认为没有必要专门打开“subSettings”, 因为我认为这只是 android 隐藏活动或防止“路径”太长的一种存根方式
0赞
Bob Redity
10/19/2022
@DanBaruch你们。我同意。也许只是我们无法访问的其他内部设置屏幕之上的一层SubSettings
0赞
Bob Redity
10/19/2022
那么@DanBaruch有没有办法获得真正的活动名称呢?我尝试过 adb 命令,但除了实际命令之外,它从未显示任何内容SubSettings
0赞
Dan Baruch
10/20/2022
@BobRedity不幸的是,我还没有找到 100% 解决它的方法。我确实发现,如果您找到设置 apk 的 Manifest.xml 源,您可以找到许多设置名称,并且其中很多可以通过 adb 命令直接打开。不过,如果我没记错的话,我认为 TalkBack 不是其中之一
评论
Settings.ACTION_SOMETHING_HERE
SubSettings
TalkBack
Accessibility