Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
371 views
in Technique[技术] by (71.8m points)

android - Register Activity To Open Any File With Certain Extension

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Not sure why are you using separate intent-filters when you can do it using a single tag.

        <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:scheme="http" android:host="*"
                android:pathPattern=".*\.myextension" />
            <data android:scheme="https" android:host="*"
                android:pathPattern=".*\.myextension" />
            <data android:scheme="content" android:host="*"
                android:pathPattern=".*\.myextension" />
            <data android:scheme="file" android:host="*"
                android:pathPattern=".*\.myextension" />
        </intent-filter>

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...