android onresume - 与AlertDialog

时间:2018-06-13 21:07:16

标签: android onresume

在我的应用中,我使用的是位置服务,首次安装后,应用程序会询问位置权限。如果用户单击“确定”,则授予权限,如果“取消”,则我有另一个包含某些信息的对话框。

然后 - 如果用户已关闭GPSon他的设备,将出现一个对话框,要求启用GPS - 如果单击“确定”,则会打开设备设置,此时用户可以启用GPS。

就目前而言,一切正常。但是我需要在用户从设置中恢复后重新启动活动。 (所以我可以根据位置加载一些项目。)

为此,我使用了onresume():

    @Override
protected void onResume() { //restart activity after back from GPS settings

    String action = getIntent().getAction();
    // Prevent endless loop by adding a unique action, don't restart if action is present
    if(action == null || !action.equals("created")) {
        Intent intent = new Intent(this, Okoli.class);
        startActivity(intent);
        finish();
    }
    // Remove the unique action so the next time onResume is called it will restart
    else
        getIntent().setAction(null);

    super.onResume();
}

我在那里使用了一个独特的动作来避免循环重启,所以在oncreate中我也设置了getIntent().setAction("created");

现在这个工作正常 - 活动在用户从设置中恢复后重新启动,但它与我首先提到的Permission对话框冲突。

因此,如果我有onResume函数,并且用户安装了应用程序,则会出现“位置”权限对话框,但在这种情况下,用户无法单击“取消”,因为如果单击“取消”,对话框将永远循环。所以它一次又一次出现,直到他点击OK。

当我从我的代码中删除整个onResume部分时,Permission对话框工作正常,但我需要onresume来重新启动活动。

1 个答案:

答案 0 :(得分:0)

okey,最后我将一个值存储到SharedPreferences - 当用户不允许位置访问时,然后我检查此值onResume并且仅在未设置值时重新启动活动。工作正常!