• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Opening gmail attachment with my app

BeachBlue

Lurker
Hi!

I need to open files with custom extension using my app. I am able to do this using Intent filters when the file is in my sd card. I can also view the 'download' and 'preview' buttons if the file is sent as a Gmail attachment. However, when I clicked the download/preview buttons, I got the message - "Sorry, the attachment could not be downloaded".

I thought this was an issue with my app. But I had a random idea and installed "Download All Files" app on my phone.
https://play.google.com/store/apps/details?id=com.hwkrbbt.downloadall&hl=en
Then, when I click download button in Gmail, both Download All Files and My App are proposed for downloading the file. I chose my app, and everything works fine!!

Is this some security issue?
These are my Intent Filters:

[HIGH] <intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="*/*" />
<data android:scheme="content" android:host="*"
android:pathPattern=".*\\.ate" />
<data android:scheme="file" android:host="*"
android:pathPattern=".*\\.ate" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/*" host="*" android:pathPattern=".*.ate" android:scheme="content" />
</intent-filter>[/HIGH]

This issue is fairly urgent.. I would really appreciate it if someone has the solution or even just points me in the right direction! Thanks!
 
I figured it out myself, so I'm posting the solution, just in case someone else encounters this weird problem.

The intent filter requires both content and file scheme types, with the mimetype application/octetstream

[HIGH] <intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="file" android:pathPattern=".*\\.inform" android:mimeType="application/octet-stream"/>
<data android:scheme="content" android:pathPattern=".*\\.inform" android:mimeType="application/octet-stream"/>
</intent-filter>[/HIGH]
 
Back
Top Bottom