要通过Action调用某个Activity代码如下:
//隐式调用代码片段
Intent intent=new Intent();
intent.setAction("com.ex.wy");
startActivity(intent);
*如果这个手机中都找不到这个Action就会报错
xml中代码
下面的
<category android:name="android.intent.category.DEFAULT" />
必须加上因为在你 startActivity(intent);时系统已经默认加上这个category了
so,为了你的Activity能够隐试调用必须加
<activity android:name=".IntentActivity">
<intent-filter>
<action android:name="com.ex.wy" />
<action android:name="com.ex.wy2" />
`
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Action的匹配规则
<action android:name="com.ex.wy" />
<action android:name="com.ex.wy2" />
我这里写了两个Action但是我的Intent中只是添加了一个Action
依然可以照常调用
但是如果我Intent中的Action有两个而且我另一个Activity加上一个Action呢
程序会调用哪个?
Intent intent=new Intent();
intent.setAction("com.ex.wy");
intent.setAction("com.ex.wy3");
startActivity(intent);
<activity android:name=".IntentActivity2">
<intent-filter>
<action android:name="com.ex.wy" />
`
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<activity android:name=".IntentActivity">
<intent-filter>
<action android:name="com.ex.wy" />
<action android:name="com.ex.wy2" />
`
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
实验结果:程序只会调用一个最符合的(IntentActivity)
如果我Intent只有一个Action呢,但是两个activity都有这个action
这种我们经常遇到,比如打开一个文件系统会让你选择用什么程序打开
so,系统会让你选择
第三种情况
Intent intent=new Intent();
intent.setAction("com.ex.wy");
intent.setAction("com.ex.wy3");
startActivity(intent);
<activity android:name=".IntentActivity2">
<intent-filter>
<action android:name="com.ex.wy" />
`
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<activity android:name=".IntentActivity">
<intent-filter>
<action android:name="com.ex.wy3" />
`
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
这种很奇葩 这个Intent中的Action有两个但是每个Activity只有一个符合
程序只会选择最后面那个
intent.setAction("com.ex.wy3");