android - android M 之前的运行时权限(api 14 及更高版本)

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

有没有办法为面向 API 14 及更高版本的应用实现运行时权限?我的应用程序具有相机功能,但不是必需的。我如何在 list 中指定它?现在我有

<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"/>

有更好的方法吗?

最佳答案

Is there a way to implement runtime permission for apps that target API 14 and up?

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

Is there a better way of doing this?

这是将所有内容都集中在一个应用程序中的唯一方法。

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

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

但是,这确实增加了复杂性:

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

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

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

关于android - android M 之前的运行时权限(api 14 及更高版本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534835/

相关文章:

android - 从 ActionBarActivity 更新 listView

java - 如何将CameraX与PreviewView一起使用?

android - 重复的属性application @ appComponentFactory

Android: list 合并失败 CoreComponentFactory

安卓 list .xml

java - 如何比较 CharSequence[] 的字符串值?

android - Flutter:http get 请求在 apk 版本上不起作用

java - Android:如何知道一个IP地址是一个Wifi IP地址?

android - 在 Zxing 条码应用程序中出现相机错误

android - 拍照不停止预览android