在设置应用信息时拒绝权限时应用程序崩溃

时间:2018-06-12 09:51:33

标签: android android-permissions

我的应用程序流程:活动A - >开放活动B

活动A为静态变量(变量 sState )设置值B需要创建的内容。

步骤1:活动B已经在前台。将其推入后台。

第2步:打开应用信息设置并撤消任何权限。

步骤3:从最近屏幕打开活动B,出现活动B并发生崩溃,因为sState未初始化

在我的Android监视器中,当拒绝权限时,我的应用程序的进程终止。

撤销应用许可时会发生什么? 所以,我已经知道使用静态变量并不是一个好选择。但如果我想在第3步中出现活动A而不是B.是否有任何解决方案?

1 个答案:

答案 0 :(得分:0)

在应用程序运行时拒绝设备设置的任何权限时,应用程序将丢失所有静态变量。您应该使用saveInstanceState()来保存活动B中的静态值。

private static final String STATE_KEY_STATIC_VALUE = "state_key_static_value";

@Override
public void onSaveInstanceState(Bundle outState) {
    outState.putString(STATE_KEY_STATIC_VALUE, sState);
    super.onSaveInstanceState(outState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    sState = savedInstanceState.getString(STATE_KEY_STATIC_VALUE);
}

或者您可以通过意图将值从A活动传递到B活动。如果您使用意图传递任何值,那么您的值将被自动保留。

并且当拒绝设备设置的许可时,将再次显示前台活动。无法显示其他活动。