android M之前的运行时权限(api 14及以上)

时间:2015-11-05 00:50:12

标签: android android-camera android-manifest android-permissions

是否有办法为针对API 14及更高版本的应用实施运行时权限?我的应用程序具有相机功能,但不是必需的。如何在清单中指定此内容?现在我有

<uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>

    <uses-feature android:name="android.hardware.camera"/>
    <uses-feature android:name="android.hardware.camera2.autofocus"/>

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

  

是否有办法为针对API 14及更高版本的应用实施运行时权限?

如果您的意思是“在安装时隐藏用户的权限,并且只在运行时请求它们”,那么答案是否定的。

  

有更好的方法吗?

这是实现这一目标的唯一方式,让所有内容都在一个应用程序中。

您可以将相机功能实现为带有单独APK的插件。您可以使用安全IPC从主应用程序与插件进行通信(例如,自定义signature权限或您自己的手动签名检查)。该插件在其清单中具有CAMERA及相关权限;主应用程序不会。

从好的方面来说,用户不必同意主应用程序的这些权限,而那些从未安装插件从不的人必须担心权限。

然而,这确实增加了复杂性:

  • 用户必须安装主应用程序和插件才能在一个应用程序中获得您目前拥有的全部功能

  • 您必须使用PackageManager等来确定插件是否存在且可以使用

  • 你必须处理一些人,他们会在没有主应用程序的情况下安装插件并想知道发生了什么