public void open(){
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage(getApplicationContext().getResources().getString(R.string.searchFilterLocationMessage));
alertDialogBuilder.setPositiveButton(R.string.Ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
/*Intent intent = new Intent(Settings.ACTION_SETTINGS) ;
this.startActivity(intent);
*/
startActivityForResult(new Intent(Settings.ACTION_SETTINGS), 0);
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0) {
Intent intent = getIntent();
finish();
startActivity(intent);
}
}//onActivityResult
Activity
以 singleTask
启动模式启动 startActivityForResult(intent, requestCode)
会立即返回取消结果。您可以在调试器中看到,甚至在系统设置 onActivityResult()
启动之前就调用了 Activity
。作为一种快速解决方法,我建议使用一个标志来指示设置
Activity
是否被调用。喜欢
private boolean flag = false;
startActivity()
startActivityForResult()
@Override
public void onClick(DialogInterface arg0, int arg1) {
startActivity(new Intent(Settings.ACTION_SETTINGS));
flag = true;
}
onResume()
@Override
protected void onResume(){
super.onResume();
if (flag) {
startActivity(new Intent(this, MainActivity.class));
finish();
}
}
startActivity(new Intent(Settings.ACTION_SETTINGS));
并在
onResume()
方法中获取当前的 Activity
:
public void onResume(){
super.onResume();
// Do your work
}
从设置屏幕返回后,您的
onResume()
方法将被调用,在这里您可以获取您的位置。