【发布时间】:2015-09-11 03:59:13
【问题描述】:
我一直在寻找解决方案,但无济于事。我已经成功设置了我的应用程序,以便在点击它的数据文件时,我的应用程序可以选择打开它(如果没有自动打开)。问题是其他文件类型也可以选择“使用我的应用程序打开”,一旦我的应用程序启动,该选项很容易被阻止,但我想一起删除该选项。
我尝试将 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,但具有自定义扩展名。
非常感谢任何帮助。
【问题讨论】:
-
在您的活动中,您是否尝试过使用 getIntent() 获取接收到的意图,然后使用 getAction()、getCategories()、getScheme()、getDataString() 检查其内容?该数据可能会提供一些关于过滤器匹配如何发生的线索。此外,从您的帖子中不清楚您是否同时在清单中使用了这两个过滤器,或者您列出了这两个过滤器只是因为您尝试了每一个但都没有工作。
-
感谢您回复@qbix - 两者都在我的清单中。感谢您提供的提示,我一定会从那里开始探索。
标签: android android-intent android-pendingintent intentfilter file-extension