在运行时禁用权限时会发生什么?

时间:2018-11-12 13:24:48

标签: android permissions

我找不到有关用户在应用程序运行时禁用其权限的情况的任何信息。

应用程序是否已重新初始化?

我发现在某些应用中,如果在禁用权限的同时打开了DialogBottomSheet,当我返回该应用时,该对话框将不再显示。

在运行时拒绝权限时,谁能详细解释发生了什么?还是有人对我有用的链接?

我将特别关注返回到应用程序时调用哪些生命周期事件。

3 个答案:

答案 0 :(得分:1)

通过设置撤销先前授予的权限后,该应用将被强制停止。您可以通过在调试器中查看您的应用程序来查看此信息。撤消该权限后,该应用程序进程将被标记为DEAD。

返回到该应用程序将从主活动启动它。我从来没有真正研究过为什么会发生这种情况,但是我想这是因为,当撤销授予的权限时,用户可能会在假定授予了权限的地方深入应用程序。撤消该权限后,将无法知道他们当前所在的屏幕是否仍然有效。

返回到应用程序后,该应用程序的状态将恢复,并且您的当前活动将重新启动,类似于配置更改。如果您所在的活动假定已授予一定的权限,则可能应在onCreate()中再次检查该权限以确保您拥有该权限。

答案 1 :(得分:0)

简而言之,这取决于应用程序在需要权限时尝试执行的操作。

例如:如果我们居住的国家/地区要求您大人才能在YouTube上观看任何视频,则Location权限被拒绝将无法正常工作

另一个示例:如果您想通过手机通过应用程序拍照,则应允许Camera权限。

在某些情况下,无法使用应用程序的部分功能,但在极端情况下,应用程序会抛出安全异常并崩溃。

答案 2 :(得分:0)

根据您的观点:

  

我在某些应用中看到,如果我在打开DialogBottomSheet时   禁用权限,我不再显示该对话框   返回应用程序。

在权限被拒绝后,您没有做任何生命周期回调,但是ActivityCompat上有一个方法,如果您想显示自己的Dialog/BottomSheet,则会为您提供标记< / p>

因此,您可以从ActivityCompat调用shouldShowRequestPermissionRationale()方法,并在逻辑成立时使自己的逻辑起作用。

  

shouldShowRequestPermissionRationale:

获取是否应显示具有请求权限的UI界面。仅当您没有权限并且请求权限的上下文未明确告知用户时,才应执行此操作。

例如

如果您编写相机应用程序,则用户会希望获得相机许可,而无需任何理由。

但是,如果应用程序需要用于标记照片的位置,那么非技术娴熟的用户可能会想知道位置与拍摄照片有何关系。在这种情况下,您可以选择显示具有请求此权限的理由的UI。


第一次禁用权限时,您会使用onRequestPermissionResult()方法进行回调。