Android:文件扩展名意图过滤器无法与GMail / Downloads应用程序一起正常运行

时间:2017-08-05 07:17:15

标签: android android-intent backup mime-types file-extension

我有一个应用程序,我允许用户备份数据,并希望他们能够通过文件管理器,GMail和下载系统应用程序点击备份文件。

我在清单文件中定义了以下意图...

        <intent-filter
            android:label="Simple Backup File"
            android:priority="999" >

            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.OPENABLE" />

            <data
                android:scheme="http"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="https"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="ftp"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="ftps"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="content"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="file"
                android:host="*"
                android:pathPattern=".*\\.sbu" />
        </intent-filter>

如果我从文件管理器中单击.sbu文件,而不是从GMail或下载列表中单击,则上述工作正常。我确实读过我需要一个mimeType来使内容方案正常工作,但当我将mimeType定义为*/*application/octet-stream时,该功能甚至会停止在文件管理器中工作。

我做错了什么?首次编写文件时是否需要设置任何设置?你最好如何处理我的情况。

1 个答案:

答案 0 :(得分:0)

我通过将内容放入其自己的intent-filter组以及文件数据方案来实现它,两者都具有mime类型的application / octet-stream。

        <intent-filter android:priority="999" >
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.OPENABLE" />

            <data
                android:scheme="http"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="https"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="ftp"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="ftps"
                android:host="*"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="file"
                android:host="*"
                android:pathPattern=".*\\.sbu" />
        </intent-filter>

        <intent-filter android:priority="999" >
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.OPENABLE" />

            <data
                android:scheme="file"
                android:mimeType="application/octet-stream"
                android:pathPattern=".*\\.sbu" />

            <data
                android:scheme="content"
                android:mimeType="application/octet-stream"
                android:pathPattern=".*\\.sbu" />
        </intent-filter>