【发布时间】:2019-08-14 14:32:16
【问题描述】:
我有一个 Android 应用,它需要读取/写入外部存储的权限。当应用程序启动时,它会提示用户允许外部存储(以及一系列其他服务 - 位置、相机等)。
我们是这样做的:
ActivityCompat.requestPermissions(this, new String[]{WRITE_EXTERNAL_STORAGE, CAMERA,ACCESS_FINE_LOCATION,INTERNET,WRITE_SETTINGS,ACCESS_WIFI_STATE,READ_PHONE_STATE}, PERMISSION_REQUEST_CODE)
现在,我们还需要从外部存储中读取身份验证服务。我们在启动时调用此身份验证服务。
现在,问题是:当您在安装后第一次运行应用程序时,这种对身份验证服务的调用可能经常发生在授予外部存储权限之前。因为认证服务没有对外存储的权限,所以认证失败。
我们现在做的解决方法:安装后手动启用权限,然后运行应用程序。虽然不是一个长期的解决方案。
我做了一些阅读,似乎在较旧的 API 中,我们可以强制在 apk 安装期间完成权限。我使用的是 API 29。是否可以在此处提示用户在安装过程中授予权限?
我也了解这被视为一项关键服务,我们无法绕过权限。相反,我们不能强制将权限设为默认值。
我现在做了什么:
稍后在代码中初始化身份验证服务,使其仅在获得权限后运行。
有没有更好的解决方案?像默认情况下强制外部存储权限的某种方式还是其他方式?根据我的阅读,最新的 Android 版本看起来不太可能。但是,如果有办法做到这一点,请告诉我。
谢谢, 阿南德
【问题讨论】:
标签: android android-manifest android-permissions