gpt4 book ai didi

android - 设置应用如何启动应用的非导出 Activity ?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:09 50 4
gpt4 key购买 nike

Android N 允许您将您的 Activity 链接到您的应用页面设置。只需添加 <intent-filter>对于 android.intent.action.APPLICATION_PREFERENCES . Android N 的设置应用程序会在您的应用程序中查找 Activity 有那个<intent-filter> .如果设置找到一个,它会添加一个齿轮图标到您应用程序的设置页面,如果用户点击齿轮,他们将被带到您指定的 Activity 。

我担心安全问题,所以我提交了 an issue , 寻找我们可以与 android:permission 一起使用的许可允许设置启动我们的 Activity ,但不允许其他应用程序启动我们的 Activity (例如,WRITE_SECURE_SETTINGS)。

cketti 然后指出 you could just mark the activity as not exported, via android:exported="false" .令我惊讶的是,这有效。

“设置”应用如何启动标记为未导出的 Activity?

我当然可以看到有一个控制它的权限。然而,快速阅读设置应用程序的 list (master branchn-developer-preview-5 分支)并没有发现任何明显的东西。

所以:

  • 是否有允许一个应用程序启动另一个应用程序的非导出组件的权限?如果有,是哪一个?

  • 如果不是,“设置”是如何做到这一点的?

最佳答案

我猜 list 中没有任何内容允许应用程序调用导出的 Activity 。我相信它实现此目的的方法是在设置应用程序的 Android.mk 文件中设置 LOCAL_PRIVILEGED_MODULE := true。此标志将授予应用程序系统级权限,并在操作系统编译期间将其放置在 system/priv-app/ 目录中。

如果你查看 frameworks/base/core/java/android/app/ActivityManager.java 方法 checkComponentPermission 你可以看到如果 UID 是SYSTEM,无论导出的设置如何,都会授予组件权限。

关于android - 设置应用如何启动应用的非导出 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39017482/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com