要通過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");