显示Intent
事件代码
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
隐式Intent
AndroidManifest.xml文件添加如下代码:
<intent-filter>
<action android:name="jackie.studio.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
事件代码:
Intent intent=new Intent("jackie.studio.activitytest.ACTION_START");
startActivity(intent);
只有<action>和<category>同时匹配Intent中指定的action和category时,这个活动才能响应。
每个Inten中只能指定一个action,但能指定多个category。
<intent-filter>
<action android:name="jackie.studio.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.MY_CATEGORY"/>
</intent-filter>
事件代码:
Intent intent=new Intent("jackie.studio.activitytest.ACTION_START");
intent.addCategory("android.intent.category.MY_CATEGORY");
startActivity(intent);
隐式Intent的其他用法
隐式Intent不仅可以启动自己程序内的活动,还可以启动其他程序的活动,比如调用浏览器,打电话等等。
调用浏览器:
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
打电话:
Intent intent=new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
活动间传递数据
向下传递
String data="Hello Android";
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("mydata",data);
startActivity(intent);
Intent intent=getIntent();
String data=intent.getStringExtra("mydata");
向上传递
第一个Activity,添加如下代码
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);//请求码设置为1,唯一就行
第二个Activity,添加如下代码
@Override
public void onBackPressed() {
Intent intent=new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
Log.d("jzDebug","backing");
finish();
}
第一个Activity,添加如下代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode==RESULT_OK){
String returnedData=data.getStringExtra("data_return");
Log.d("jzDebug",returnedData);
}
break;
default:
Log.d("jzDebug","sth wrong");
break;
}
}