定义一个整数常量,例如:
private static final int REQUEST_CODE = 1;
在你的 Activity 类中创建一个新的 Intent:
Intent intent = new Intent(this, DestinationActivity.class);
startActivityForResult(intent, REQUEST_CODE);
在这个 Activity 类中重写以下方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// do something
}
}
在您的目标 Activity 类 DestinationActivity 中,您必须创建一个新的 Intent 来保存数据:
Intent data = new Intent();
data.putExtra("boolean1", true);
data.putExtra("boolean2", false);
要将数据传回源活动,您必须调用以下方法:
setResult(REQUEST_CODE, data); // will call onActivityResult() method
更多信息请查看here 和there
如果您想通过手机中的其他应用发送文本,您可以使用 explicit intent 或 ShareCompat 类(由 v4 支持库提供)。 ShareCompat 示例:
Intent shareIntent = ShareCompat.IntentBuilder.from(this)
.setType("text/plain")
.setSubject("ShareCompat")
.setText("I am using ShareCompat class")
.setChooserTitle("Sending Text")
.createChooserIntent();
if (shareIntent.resolveActivity(getPackageManager()) != null)
startActivity(shareIntent);
显式和隐式意图示例:
1) 清单文件:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="tj.xona.customaction" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
2) MainActivity 类:
public class MainActivity extends AppCompatActivity {
private TextView textView;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.outputText);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Intent intent = new Intent(MainActivity.this, SecondActivity.class); // Explicit intent
Intent intent = new Intent(); // Implicit intent
intent.setAction("tj.xona.customaction"); // custom action
startActivityForResult(intent, SecondActivity.CUSTOM_INTENT);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SecondActivity.CUSTOM_INTENT && resultCode == RESULT_OK) {
String msg = data.getStringExtra(SecondActivity.MESSAGE_BACK);
textView.setText(msg);
}
}
}
3) SecondActivity 类:
public class SecondActivity extends AppCompatActivity {
public static final int CUSTOM_INTENT = 1;
public static final String MESSAGE_BACK = "message";
private EditText edit;
private Button send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
edit = (EditText) findViewById(R.id.edit);
send = (Button) findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String msg = edit.getText().toString();
Intent intent = new Intent();
intent.putExtra(MESSAGE_BACK, msg);
setResult(RESULT_OK, intent);
finish();
}
});
}
}
结论:您可以在应用中使用intent-filter 定义的Activity 使用显式和隐式intent。但是,如果您想使用来自另一个应用程序的活动,则必须使用隐式意图。在您的应用程序中,最好使用显式意图来启动活动。使用隐式意图的想法是重用手机中其他应用程序的某些活动。当您遵循使某些功能易于使用且最有趣的标准操作名称时,您可以有多种选择。通过对您的活动使用自定义操作,您可以限制您的应用程序,因为没有人知道此自定义操作,例如在此示例中:“tj.xona.customaction”。