android intentFilter 了解

99 阅读1分钟

文章地址: 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);
}