Android intent-filter - 自定义扩展
Android intent-filter - custom extension
我一直在寻找解决方案,但无济于事。我已经成功设置了我的应用程序,这样当点击它的数据文件时,我的应用程序可以选择打开它(如果没有自动打开)。问题是其他文件类型也被赋予 'open with my app' 选项,一旦我的应用程序启动,这很容易被阻止,但我想一起删除该选项。
我已经尝试将 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“*/*”引起的,但如果我将其设为其他任何内容,我的应用程序 不是 打开自定义文件的选项类型。所以好像我处于一个全有或全无的情况。文件类型实际上只是 sqlite 但具有自定义扩展名。
非常感谢任何帮助。
documentation 表示如果方案和主机不存在,则忽略 pathPattern 的值。尝试添加:
<data android:host="*" />
也看看这个相关的SO post and answer。
我一直在寻找解决方案,但无济于事。我已经成功设置了我的应用程序,这样当点击它的数据文件时,我的应用程序可以选择打开它(如果没有自动打开)。问题是其他文件类型也被赋予 'open with my app' 选项,一旦我的应用程序启动,这很容易被阻止,但我想一起删除该选项。
我已经尝试将 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“*/*”引起的,但如果我将其设为其他任何内容,我的应用程序 不是 打开自定义文件的选项类型。所以好像我处于一个全有或全无的情况。文件类型实际上只是 sqlite 但具有自定义扩展名。
非常感谢任何帮助。
documentation 表示如果方案和主机不存在,则忽略 pathPattern 的值。尝试添加:
<data android:host="*" />
也看看这个相关的SO post and answer。