在“设置”中为结果启动活动

时间:2017-09-27 19:00:35

标签: android android-intent startactivityforresult

当我的应用程序启动并且未启用位置时,系统会要求用户将其启用。我已经使用startActivity(intetnt)完成了它并且它可以工作,但现在我想让它在用户打开后自动关闭。我知道可以使用StartActivityForResult完成,但不知道如何。

public void onClick(DialogInterface dialogInterface, int i) {
    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);                    
    startActivityForResult(intent,0x1002);
}

3 个答案:

答案 0 :(得分:2)

  

但现在我希望在用户开启后自动关闭它。我知道可以使用StartActivityForResult完成,但不知道如何

startActivityForResult()正如姓名所说的那样。它启动活动并让您从中获得一些结果。就这样。

你不能关闭你调用的活动,除非它给你这样的选择(通过期望在Bundle中传递某些参数等)。

答案 1 :(得分:-2)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    switch (requestCode) {
        case 0x1002:
            finish();
    }
}

答案 2 :(得分:-2)

从第一个Activity调用第二个Activity,使用startActivityForResult()方法



    Intent i = new Intent(this, SecondActivity.class);
    startActivityForResult(i, 1);

 

如果要发回数据,请在第二个活动中:

 

    Intent returnIntent = new Intent();
    returnIntent.putExtra("result",result);
    setResult(Activity.RESULT_OK,returnIntent);
    finish();

如果您不想返回数据:



    Intent returnIntent = new Intent();
    setResult(Activity.RESULT_CANCELED, returnIntent);
    finish();

现在,在第一个Activity类中,为onActivityResult()方法编写以下代码。



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1) {
            if(resultCode == Activity.RESULT_OK){
                String result=data.getStringExtra("result");
            }
            if (resultCode == Activity.RESULT_CANCELED) {
                //Write your code if there's no result
            }
        }
    }//onActivityResult