无法打开自定义文件扩展名

时间:2014-02-13 03:23:17

标签: android android-activity android-manifest android-actionmode

我有一个我希望支持的文件格式,它只是一个zip,但我已将其重命名为.amg所以我的应用程序可以读取它。

在带有姜饼的三星手机上,它工作正常并打开。

在带有kitkat的摩托罗拉手机上我得到的是无法打开它。

我尝试了各种解决方案,但似乎都没有。

通常我会将文件复制到手机上的下载文件夹中,然后点击该文件。

唯一适用于kitkat的是我使用Astro文件管理器打开文件,但我无法强迫该应用程序使用。那么是什么让Astro工作却没有别的呢?

    <activity
        android:name="com.test.StartupActivity"
        android:label="@string/app_name"
        android:theme="@style/backdropTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:host="*" />
            <data android:mimeType="*/*" />
            <data android:scheme="file" />
            <data android:pathPattern=".*\\.amg" />
        </intent-filter>
    </activity>

** [编辑] * ** * ** 如果我在kitkat中使用Astro文件管理器它似乎工作。所以Astro工作,我试过的其他三个,包括内置的一个,但姜饼总是有效。

然而,当我尝试打开文件时,在我的kitkat上,我得到以下异常: 存储的块长度无效。

1 个答案:

答案 0 :(得分:1)

如果您查看logcat,在尝试打开电子邮件附件等时,您可以看到内容是如何解析的。你会注意到mimeType是application / octet-stream。请注意,我没有将pathPattern隐含的方案设置为file |内容。这是我用于gpx文件的过滤器:

<intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.EDIT" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:mimeType="application/octet-stream"
                android:host="*"
                android:pathPattern=".*\\.gpx" />
        </intent-filter>  

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.EDIT" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:mimeType="application/gpx"
                android:host="*"
                android:pathPattern=".*\\.gpx" />
        </intent-filter>

        <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:host="*"
                android:pathPattern=".*\\.gpx" />
        </intent-filter>