我去phone设置,修改了一个权限,如何让app重启,回到MainActivity?

I went to the phone settings, modified a permission, How to make the app restart, back to MainActivity?

我正在对我的应用进行 targetVersion 升级。现在我有一个问题。当我进入 phone 设置时,我手动拒绝了权限。当我回到我的 APP 时,我想重新启动它并 return 到 MainActivity。现在当我返回时,它只是重新启动当前 Activity。你能给我一些建议吗?

我检查了一些程序。他们通过判断savedInstanceState != null来确认是否被修改。我认为这是错误的,因为我备份了savedInstanceState中的数据,只判断savedInstanceState != null不行,是片面的。

如果权限已更改,您可以检查 OnResume。但是,只要您 "tab out and tab back in*" 到应用程序,这通常会完成。更好的方法是检查 savedInstanseState !=null 是否存在,如果是,则重新检查相关权限,如果它们已更改,则 finish() activity 返回 MainActivity,and/or 发送一个意图如果需要重新启动 MainActivity。

savedInstanceState 在更多情况下可以是 "not null",而不是像您指出的那样更改权限,因此您应该重新检查相关权限以确保确实发生了某些更改。

您需要将数据存储在更持久的事物中(共享首选项、数据库、文件,任何适用的)并手动恢复它。

当用户通过设置撤销权限时,应用程序进程会在没有任何回调的情况下被杀死,以防止不必要的行为,例如:

  1. Activity 检查 onCreate
  2. 中的 READ 权限
  3. 用户暂停 activity 并在设置中撤销权限
  4. Activity 恢复假设它仍然拥有权限并在读取尝试时崩溃

这也包括终止所有正在进行的服务。常规 Activity 生命周期不适用于这种情况。