What intent-filters must my app cover to appear in

2019-01-09 04:25发布

问题:

What are the possible intent-filter I need to cover to make sure that any external app requesting an image will see my app in the list?

To clarify, I'd like my app to appear when doing the following:

So far I've covered:

<intent-filter>
    <action android:name="android.intent.action.PICK" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.GET_CONTENT" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>

However, if using the Tumblr app and pressing "Add photo", my app does not appear in the chooser dialog. Which filter am I missing out on?

回答1:

I had covered the correct intent-filters, however the Tumblr app requires the category OPENABLE, so instead of the filters I had I'm now using:

<intent-filter>
    <action android:name="android.intent.action.PICK" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.GET_CONTENT" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.OPENABLE" />
    <data android:mimeType="image/*" />
</intent-filter>

Only adding the line:

<category android:name="android.intent.category.OPENABLE" />


回答2:

Some applications may specify the application to open, and some applications have already set the default applications to Open.



回答3:

The share feature uses the following intent filter

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>

Remember that this does not mean an app is requesting a photo but that it wants to send one somewhere.



回答4:

Use this <intent-filter>:

<intent-filter
    android:icon="@drawable/icon"
    android:label="Share to my app">
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>