我找不到有关用户在应用程序运行时禁用其权限的情况的任何信息。
应用程序是否已重新初始化?
我发现在某些应用中,如果在禁用权限的同时打开了Dialog
或BottomSheet
,当我返回该应用时,该对话框将不再显示。
在运行时拒绝权限时,谁能详细解释发生了什么?还是有人对我有用的链接?
我将特别关注返回到应用程序时调用哪些生命周期事件。
答案 0 :(得分:1)
通过设置撤销先前授予的权限后,该应用将被强制停止。您可以通过在调试器中查看您的应用程序来查看此信息。撤消该权限后,该应用程序进程将被标记为DEAD。
返回到该应用程序将从主活动启动它。我从来没有真正研究过为什么会发生这种情况,但是我想这是因为,当撤销授予的权限时,用户可能会在假定授予了权限的地方深入应用程序。撤消该权限后,将无法知道他们当前所在的屏幕是否仍然有效。
返回到应用程序后,该应用程序的状态将恢复,并且您的当前活动将重新启动,类似于配置更改。如果您所在的活动假定已授予一定的权限,则可能应在onCreate()中再次检查该权限以确保您拥有该权限。
答案 1 :(得分:0)
简而言之,这取决于应用程序在需要权限时尝试执行的操作。
例如:如果我们居住的国家/地区要求您大人才能在YouTube上观看任何视频,则Location
权限被拒绝将无法正常工作
另一个示例:如果您想通过手机通过应用程序拍照,则应允许Camera
权限。
在某些情况下,无法使用应用程序的部分功能,但在极端情况下,应用程序会抛出安全异常并崩溃。
答案 2 :(得分:0)
根据您的观点:
我在某些应用中看到,如果我在打开
Dialog
或BottomSheet
时 禁用权限,我不再显示该对话框 返回应用程序。
在权限被拒绝后,您没有做任何生命周期回调,但是ActivityCompat
上有一个方法,如果您想显示自己的Dialog/BottomSheet
,则会为您提供标记< / p>
因此,您可以从ActivityCompat
调用shouldShowRequestPermissionRationale()
方法,并在逻辑成立时使自己的逻辑起作用。
shouldShowRequestPermissionRationale:
获取是否应显示具有请求权限的UI界面。仅当您没有权限并且请求权限的上下文未明确告知用户时,才应执行此操作。
例如,
如果您编写相机应用程序,则用户会希望获得相机许可,而无需任何理由。
但是,如果应用程序需要用于标记照片的位置,那么非技术娴熟的用户可能会想知道位置与拍摄照片有何关系。在这种情况下,您可以选择显示具有请求此权限的理由的UI。
第一次禁用权限时,您会使用onRequestPermissionResult()
方法进行回调。