【问题标题】:Android: Confusion in understanding the runtime permissionsAndroid:理解运行时权限的困惑
【发布时间】:2019-01-25 20:12:35
【问题描述】:

我正在我的应用中实现运行时权限。我有几个问题要清楚地理解它们。

情况:

  • 我的应用程序 B应用程序 A 的子应用程序
  • 也就是说,我的应用程序作为其一部分驻留在 应用程序 A 中,并且在需要时我可以启动它。

问题:

  1. 如果用户已经将所有必要的运行时权限授予应用程序 A(父应用程序),那么子应用程序,即 应用程序 B 是否可以携带相同的权限授予还是必须再次询问他们?

  2. 如果我在旧版本的基础上安装新版本的应用程序,是否需要再次询问权限?假设是版本 2 到 3。

【问题讨论】:

  • “我的应用程序(B)是应用程序(A)的子应用程序”是什么意思? “我的应用程序作为其一部分驻留在应用程序 A 中,并且在需要时我可以启动它”是什么意思?
  • @CommonsWare 在父应用程序中有一个名为“Axis”的按钮,如果您单击它将打开一个名为“Axis”的子应用程序,其中包含很少的数据来推进工作
  • 所以 app(B) 真的只是一个从 app(A) 获取某种意图/数据的其他应用程序?
  • @TWL 是的,你没看错。

标签: android android-runtime


【解决方案1】:

从技术上讲,是的。如果 app-A 和 app-B 是两个独立的应用,则它们各自需要自己的一组权限和权限请求。

不,如果以前允许某个权限,则安装较新版本不会重置该权限的状态。

但是,如果您希望 app-B 保留与 app-A 相同的权限状态,则应查看名为 android:sharedUserId 的内容。如果 app-A 与 app-B 具有相同的 sharedUserId,则 app-B 将具有与 app-A 相同的权限状态,反之亦然。

我找不到任何帖子充分讨论具有相同应用程序之间共享权限状态的帖子,但您可以查看其中一些帖子以获取额外说明:

我自己做了一个快速测试,可以确认两个具有相同 sharedUserId 的应用确实共享权限状态,所以你自己试试吧。只需设置一个示例项目/应用程序来检查并请求权限,克隆它,给它们相同的sharedUserId,安装它们,允许一个权限,你会看到它已经处于允许状态其他。

【讨论】:

  • 谢谢。这是一个有用的。那么,这种方法的缺点是什么?
  • “两个应用程序必须签署相同的证书”是什么意思?
  • 我不能肯定地评论缺点,但你的第二个问题意味着两个应用程序必须由相同的密钥签名。
  • 您能想到哪些可能的缺点?
  • 这个问题值得单独发帖,谢谢!
猜你喜欢
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 2021-10-05
  • 2016-03-25
相关资源
最近更新 更多