react-native - 如何在安装期间/在应用程序启动之前为 React Native 应用程序请求权限?
问题描述
我希望用户在安装期间/应用程序开始之前授予权限,而不是在应用程序运行时被提示。目前,我在我的应用程序的 Android 版本上请求粗略位置和麦克风访问权限,并在应用程序的 IOS 版本上请求 BLE 和麦克风访问权限。
解决方案
这是不可能的,根据 Android 文档,只有当 android 版本低于 Marshmallow(即 < SDK 23)时,您才能在安装时请求权限。如果 android 版本是 marshmallow 或更高版本,则会在运行时询问权限,您无法更改它。
如果设备运行 Android 6.0(API 级别 23)或更高版本,并且应用的 targetSdkVersion 为 23 或更高版本,则应用在运行时向用户请求权限。用户可以随时撤销权限,所以应用每次访问受权限保护的API时都需要检查自己是否拥有权限。有关在应用程序中请求权限的更多信息,请参阅使用系统权限培训指南。
如果设备运行Android 5.1.1(API级别22)或更低,或者应用的targetSdkVersion为22或更低,系统会在用户安装应用时要求用户授予权限。如果您向应用程序的更新版本添加新权限,系统会在用户更新应用程序时要求用户授予该权限。一旦用户安装了应用程序,他们可以撤销权限的唯一方法是卸载应用程序。
https://developer.android.com/guide/topics/permissions/requesting.html
对于 iOS,在运行时也会询问权限,就像 iOS 9 以来的情况一样。我不确定 iOS 9 之前的流程是什么。
推荐阅读
- wpf - 从基本样式派生样式失败 WPF
- oracle - oracle DB中的删除速度很慢
- java - set() 方法在 JavaFX 属性中不起作用
- angular - Firestore 仅返回最后一个文档
- c# - 如何使用 ServiceStack 将 json 反序列化为多个 DataContract 之一
- android - 如何启用不在视图中的 HorizontalScrollView 中的特定按钮
- spring-boot - 如何永远使用spring boot jar
- android - 通知嵌套适配器内更改的项目
- scala - Spark DeltaLake Upsert(合并)正在抛出“org.apache.spark.sql.AnalysisException”
- java - 根据其中一项将 ArrayList 类过滤到另一个类中