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