我已经阅读了关于这个主题的数千个问题,但没有找到任何有用的答案。
我必须创建一个文件(包含字符串),从下载应用程序或我要打开我的应用程序的文件管理器中单击它。 (只是我的应用程序)
我可以根据需要创建文件:文件名,文件扩展名或mime tipe
每次尝试都失败了:或者我的应用拦截了任何文件,或者我的应用没有拦截我的文件
所以,我的问题是:
1)如何根据需要创建文件?
2)如何为该文件创建意图过滤器?
这么多
答案 0 :(得分:0)
有时候android sdk做得不好,这是一个案例:
将Nexus 6p与Stock 7.1.2一起使用,点击下载的文件会根据您的应用程序生成不同的意图。我强调设备没有外部应用程序和固件库存的事实。在不同系统应用程序生成的意图列表下方
来自Donwnloads
act=android.provider.action.MANAGE_DOCUMENT
dat=content://com.android.providers.downloads.documents/document/152
cmp=com.android.providers.downloads.ui/.TrampolineActivity
从最近(内部下载)
act=android.intent.action.VIEW
dat=content://com.android.providers.downloads.documents/document/152
typ=application/json
来自官方的Android文件浏览器(在设置内)
act=android.intent.action.VIEW
dat=content://com.android.externalstorage.documents/document/primary:Download/20-conversation.nc
typ=application/octet-stream
我发现拦截所有意图的唯一解决方案是这个(我的文件是xxxx.nc并包含一个json字符串):
<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:mimeType="*/*"
android:pathPattern=".*\\.nc"
android:scheme="content"/>
</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:mimeType="application/json"
android:scheme="content"/>
</intent-filter>
我希望第三方文件管理器不会创建更多的熵