1.http://blog.csdn.net/daogepiqian/article/details/50606474
2.http://blog.csdn.net/wulianghuan/article/details/8508848
3.Activity中的action和category可以都相同,这样启动intent时如下
4.部分代码如下:
<activity android:name=".Second_Activity">
<intent-filter>
<action android:name="com.android.activity.MY_ACTION" /> <category android:name="android.intent.category.my" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Third_Activity">
<intent-filter>
<action android:name="com.android.activity.MY_ACTION" /> <category android:name="android.intent.category.my" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
text1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent it = new Intent();
it.setAction("com.android.activity.MY_ACTION");
it.addCategory("android.intent.category.my");
startActivity(it); }
});
5.Intent调用另外一个app的界面
<1>
Intent it=new Intent();
/**
* 参数:
* 包名
* 包名+Activity名称
* */
it.setClassName("com.example.customview05imageview", "com.example.customview05imageview.MainActivity");
startActivity(it);
<2>
try{
Intent intent = new Intent();
intent.setAction("android.intent.action.MAIN");
intent.addCategory("com.tupian");
startActivity(intent);
}
catch (Exception e)
{
Toast.makeText(this,"请先安装该app",Toast.LENGTH_SHORT).show(); }
<category 必须加上Default,否则找不到该Acitivity>
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.myMainActivity2"/>
<category android:name="com.tupian2" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
6. 效果图:
不同的app,activity,只要action相同。那么通过隐式intent就可以打开app的特定Activity。
7.小结:
一个Activity可以有多个action,也能有多个category。 使用隐式Intent,如果使用了addcategory(),那样activity的配置中除去添加的category,必须要加上category的default值,否则找不到该activity。
当intent使用setaction时,如果多个activity的action相同,则会同时启动调用。
如下代码:则可以启动activity2,activity3的
Intent intent = new Intent("eee") ; // eee 为action
startActivity(intent);
// 如果加上category则需要action和category都相同才能启动
Intent intent = new Intent("eee") ;
intent.addCategory("cate");
startActivity(intent);
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SENDTO" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="eee" />
<action android:name="ss" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity> <activity android:name=".Main3Activity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="eee" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="cate" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
一个activity中可以配置多个<intent-filter>,只需要与其中一个相同,activity即可启动。