我正在处理运行时权限。当我在创建具有图像的报告时进入我的活动类时,当更改权限时应用程序崩溃并且我丢失了我的数据。我使用了OnsaveInstance
但它没有做我真正想要的。当有人从设置更改应用程序权限并保存我的报告时,我想重新启动我的应用程序。
权限更改后调用哪个活动方法?
我怎么知道权限已从后台更改?
答案 0 :(得分:1)
您可以检查活动启动或恢复的权限,例如 this answer
并且对于重新启动应用,您可以尝试此Q / ans thread中的任何答案,这是在此处重新启动活动的已接受答案之一
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
答案 1 :(得分:1)
我怎么知道权限已从后台更改。?
如果用户从“设置”中删除了用户之前授予的权限,则会立即终止您的进程。您发现下次应用运行时权限已更改。
如果从“设置”中,用户授予用户之前未授予的权限,则您的流程将保持不变,但您也不会被告知新的权限。欢迎您在适当的时候致电checkSelfPermission()
,看看您现在是否拥有以前所缺少的许可。
答案 2 :(得分:1)
要查看您目前是否拥有使用ContextCompat.checkSelfPermission()
的权限,请参阅the developer docs了解详情。
如果您需要后台线程中的权限,那么在开始工作之前,请检查您是否拥有该权限。如果您没有权限,则必须跳过工作,如果您继续,那么您的代码很可能会抛出SecurityException
。
当您没有所需权限时,如何处理它取决于用例。您可以创建系统通知,通知用户由于缺少权限而无法执行后台任务。如果用户点击通知,则可以在重试任务之前请求用户的许可。有关如何向用户请求权限,请参阅相同的开发人员文档。
如果可以中止后台任务,那么你可以做到这一点,但你可能想在你的用户界面中显示后台任务需要一个缺少的权限,并要求用户授予它以便(可选)后台任务可以完成它的工作。