在 Android API 版本22及之前,系统会在安装时获取所有权限。从API 23(Marshmallow)开始,系统在运行时(应用程序实际尝试使用功能时)要求权限。出于某些原因,这并不适合所有情况。
以下是一些问题:
- 开发者必须经常编写两个不同的代码流程(一个是用户授权,另一个是用户拒绝)。 - 在请求权限时,Android 可以完全控制显示在权限对话框上的文本,并要求用户按“是”或“否”。有时,权限对话框中显示的文本不合适。 - 如果我们请求多个权限中的一个权限被拒绝,则由于 Android 代码错误,应用程序会崩溃。这是 API 23、24 和 25 的问题。我认为它在 26 中已修复。
我们应用遇到的问题有:
- 例如:出于安全原因,我们想获取设备ID,但当我们请求权限时,Android 显示的消息类似于'Allow MyApp to manage phone calls'。我们与电话呼叫无关,这个消息不适合获取设备 ID。这导致用户在应用中注册和营销团队非常担心。 - 例如:我们有很多 web 视图,我们尽可能地使用离线存储和缓存来提供更好的用户体验,但是用户正在拒绝权限,因为 Android 权限对话框显示 'Allow MyApp to access storage files'。
那么问题是,是否有任何方法可以在应用程序安装时(如 API v22 及之前)获取所有权限,在新的API版本(23及以上)中而不是在运行时请求?
以下是一些问题:
- 开发者必须经常编写两个不同的代码流程(一个是用户授权,另一个是用户拒绝)。 - 在请求权限时,Android 可以完全控制显示在权限对话框上的文本,并要求用户按“是”或“否”。有时,权限对话框中显示的文本不合适。 - 如果我们请求多个权限中的一个权限被拒绝,则由于 Android 代码错误,应用程序会崩溃。这是 API 23、24 和 25 的问题。我认为它在 26 中已修复。
我们应用遇到的问题有:
- 例如:出于安全原因,我们想获取设备ID,但当我们请求权限时,Android 显示的消息类似于'Allow MyApp to manage phone calls'。我们与电话呼叫无关,这个消息不适合获取设备 ID。这导致用户在应用中注册和营销团队非常担心。 - 例如:我们有很多 web 视图,我们尽可能地使用离线存储和缓存来提供更好的用户体验,但是用户正在拒绝权限,因为 Android 权限对话框显示 'Allow MyApp to access storage files'。
那么问题是,是否有任何方法可以在应用程序安装时(如 API v22 及之前)获取所有权限,在新的API版本(23及以上)中而不是在运行时请求?