【问题标题】:Best way to split Android permissions into multiple apps / plugins将 Android 权限拆分为多个应用程序/插件的最佳方法
【发布时间】:2013-06-03 21:41:56
【问题描述】:

我想将“未读短信计数”功能添加到我的应用程序中,这当然需要新的 Android 权限,因为并非所有用户都需要该功能,我想将其作为插件分发以避免在主应用上拥有太多权限。

应用程序已经在市场上,当我第一次发布它时我没有指定“UID”,所以共享“UID”空间不是一个选项。

所以问题是,哪种方法最好? AIDL 远程服务是我唯一的选择吗?有没有更简单的解决方案?

【问题讨论】:

  • 我相信您可以在插件中使用内容提供程序并在您的主应用程序中使用它。

标签: android plugins permissions rpc aidl


【解决方案1】:

AIDL 远程服务是我唯一的选择吗?

没有。

有没有更简单的解决方案?

为您尝试访问的(未记录且不受支持的)ContentProvider 创建一个 ContentProvider 代理。

this directory 中的项目展示了这样的代理和该代理的消费者。就我而言,我正在代理CallLog,但同样的概念适用于任何ContentProvider

关键是:

  • 让插件持有它所代理的ContentProvider 所需的权限

  • 让应用程序和插件都定义一个自定义签名级权限以供此类插件使用 (<permission>)

  • 让应用持有该权限 (<uses-permission>)

  • 让插件通过该自定义权限 (android:permission) 保护 ContentProvider 代理

这将允许您的应用访问插件的ContentProvider 代理,同时不会将访问代理ContentProvider 的能力泄露给其他人。

【讨论】:

  • 看起来比 AIDL 方法优雅得多!我会对其进行测试并标记为已解决,如果它有效但仍然有用!
  • 工程和相同的方法也可以用于广播接收器(即“呼叫”权限),所以它非常灵活,非常感谢
猜你喜欢
  • 1970-01-01
  • 2020-04-26
  • 2011-08-29
  • 1970-01-01
  • 2015-10-11
  • 2015-07-24
  • 1970-01-01
  • 2010-09-10
  • 2012-03-20
相关资源
最近更新 更多