android onresume-与AlertDialog冲突

android onresume-与AlertDialog冲突,android,onresume,Android,Onresume,在我的应用程序中,我正在使用位置服务,首次安装后,该应用程序会请求位置许可。如果用户单击“确定”,则授予权限;如果单击“取消”,则我会有另一个包含一些信息的对话框 然后-如果用户已关闭其设备上的GPS,将出现一个对话框,要求启用GPS-如果单击“确定”,将打开设备设置,用户可以在此处启用GPS 到目前为止,一切正常。但我需要在用户从设置返回后重新启动活动。(因此我可以根据位置加载一些项目) 为此,我使用了onresume(): 我在那里使用了一个独特的操作来避免循环重新启动,因此在oncreat

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

然后-如果用户已关闭其设备上的GPS,将出现一个对话框,要求启用GPS-如果单击“确定”,将打开设备设置,用户可以在此处启用GPS

到目前为止,一切正常。但我需要在用户从设置返回后重新启动活动。(因此我可以根据位置加载一些项目)

为此,我使用了onresume():

我在那里使用了一个独特的操作来避免循环重新启动,因此在oncreate中,我还设置了
getIntent().setAction(“created”)

现在这一切都很好——用户从设置返回后,活动会重新启动,但它与我前面提到的权限对话框冲突

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


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

好的,最后我将一个值存储到SharedReferences-当用户不允许位置访问时,然后我在Resume上检查该值,只有在未设置该值时才重新启动活动。很好

    @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();
}