Android意图过滤器 - 自定义扩展程序

时间:2015-06-24 19:21:48

标签: android android-intent android-pendingintent intentfilter file-extension

我一直在努力寻找解决方案但是无济于事。我已成功设置我的应用程序,以便在点击它的数据文件时,我的应用程序可以选择打开它(如果没有自动打开)。问题是,其他文件类型也可以选择“使用我的应用程序打开”,这可以在我的应用启动后轻松阻止,但我想一起删除该选项。

我尝试将pathPattern更改为非常具体的内容,因为这应该是唯一使用的文件名:" file.fakeapp"但我的应用程序仍试图打开任何文件,无论名称或分机。

这是我的意图过滤器:

        <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="content" 
                android:pathPattern="file.fakeapp" 
                android:mimeType="application/octet-stream"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data 
                android:scheme="file" 
                android:mimeType="*/*"     
                android:pathPattern="file.fakeapp"/>
        </intent-filter>

我怀疑问题是由于文件方案,mimeType&#34; * / *&#34;但如果我做了其他任何事情我的应用程序是打开自定义文件类型的选项。所以我好像处于一种全有或全无的境地。文件类型实际上只是sqlite,但有自定义扩展名。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

documentation表示如果scheme和host不存在,则忽略pathPattern的值。尝试添加:

<data android:host="*" />

另请参阅此相关SO post and answer