I've been working on an application which is set to open a file with a specific extension. It works some times with Gmail (some files open, while some don't), and I can open a file from the file explorer.
I can't open the files from the Email application on the phone however and as I say, some files do not open from the Gmail application with my application and some do!
Here is my code.
<intent-filter > <!-- Solution from @richardlegget on this question http://stackoverflow.com/questions/8148629/intent-filter-to-download-attachment-from-gmail-apps-on-android -->
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/octet-stream" android:pathPattern=".*\\.myextension" />
</intent-filter>
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.myextension" />
</intent-filter>
My Question
Is there a blanket set of intent-filters that register a specific activity with any file containing the desired file extension from anywhere on the Android device?
Try multiple
<data android:pathPattern/>
like this answer suggestsNot sure why are you using separate intent-filters when you can do it using a single tag.
There might be a permissions problem. I.E If your activity is set to open in separate task, then cannot access files created/owned by other applications. You'l have to set intent flags such that it opens in the same application.
You need to resolve your path yourself when the
scheme
iscontent
, i.e. when you receive aURI
to aContentProvider
. The system will look at the mime type for your by call toContentResolver.getType(Uri uri)
before your intent filter is checked, hence you need the code below.Resolve the file path to your file by fetching a Cursor from the URI containing content scheme and query the _data column:
And add this intent-filter:
And the snippet is as below...
public void openAllFiles(File url) throws IOException { // Create URI File file=url; Uri uri = Uri.fromFile(file);
}