启动自己程序内的Activity
不明确指出启动哪一个活动,指定一系列action和category,信息交给系统处理,找到适合启动的活动。
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
只有当action和category中的内容同时匹配Intent中指定的action和category时,Intent才能被启动。
AndroidManifest.xml
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=newIntent("com.example.activitytest.ACTION_START");
startActivity(intent);
}
});
因为android.intent.category.DEFAULT是默认的category,在调用startActivity()方法时会自动把这个category添加到这个Intent 中。
每个Intent 可以指定多个action,却可以指定多个category.
如果不匹配,程序就会崩溃
Intent intent=new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("android.intent.category.MY_CATEGORY\"");
startActivity(intent);
自定义一个category,MY_CATEGORY,AndroidManiFest.xml中没有声明。声明后就可以,<category android:name="android.intent.category.MY_CATEGORY" />
调用其它程序 的Activity
如调用浏览器:
@Override
public void onClick(View view) {
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
拨打电话:
@Override
public void onClick(View view) {
Intent intent=new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}