android conflict with AlertDialog



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

然后 - 如果用户关闭了 GPS在他的设备上,将出现一个对话框,要求启用 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");

现在这工作正常 - 用户从设置返回后活动重新启动,但它与我首先提到的权限对话框冲突。

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

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

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

相关内容

  • 没有找到相关文章

最新更新