文章地址: juejin.cn/post/684490…
intentFilter 设置IntentFilter 主要是为了,可以隐式的启动这个Activity
<activity android:name="ShareActivity">
<!-- This activity handles "SEND" actions with text data -->
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
<!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<action android:name="android.intent.action.SEND_MULTIPLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/vnd.google.panorama360+jpg"/>
<data android:mimeType="image/*"/>
<data android:mimeType="video/*"/>
</intent-filter>
</activity>
隐式的启动一个Activity需要通过intent.resolveActivity(getPackageManager())判断是否有满足条件的IntentFilter。
设置 Data 时,调用 setData() ,设置 Type 时,调用 setType ,注意,这两个方法不能同时设置,会被覆盖掉。如果想要同时设置 Data 和 Type,请调用 setDataAndType。
Intent intent = new Intent();
intent.setAction("com.cyy.send");
intent.addCategory(Intent.CATEGORY_DEFAULT);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}