从设置屏幕android返回动作

时间:2014-12-19 14:59:07

标签: android android-activity android-alertdialog

我的场景:

  1. 我正在开展活动
  2. 我正在进行验证(检查互联网)
  3. 如果验证错误,则启动警报对话框
  4. 现在我按设置启用互联网回归设置 按钮
  5. 对话框未被解除,但仍在屏幕上
  6. 我的目标是从设置返回时重新启动活动 屏

  7. CODE

    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
    

2 个答案:

答案 0 :(得分:8)

通过调用 Activity 启动 singleTask 启动模式的startActivityForResult(intent, requestCode)会立即返回取消结果。您可以在调试器中看到它甚至在系统设置onActivityResult()开始之前调用了 Activity

作为一种快速解决方法,我建议使用一个标志来指示是否调用了设置Activity。像

  1. 设置标志

    private boolean flag = false;
    
  2. 使用 startActivity() 取代 startActivityForResult()

    @Override
    public void onClick(DialogInterface arg0, int arg1) {
        startActivity(new Intent(Settings.ACTION_SETTINGS));
        flag = true;
    }
    
  3. 检查 onResume()

    中的标记
    @Override
    protected void onResume(){
    super.onResume();
        if (flag) {
            startActivity(new Intent(this, MainActivity.class));
            finish();
        }
    }
    

答案 1 :(得分:1)

启动设置意图:

startActivity(new Intent(Settings.ACTION_SETTINGS));

并在onResume()方法中获取当前的活动

public void onResume(){
    super.onResume();
    // Do your work
}

从设置屏幕返回后,系统会调用onResume()方法,您可以在此处获取您的位置。