如何创建文件以匹配自定义意图过滤器以打开我的应用?

时间:2017-07-13 09:17:25

标签: android android-intent intentfilter

我已经阅读了关于这个主题的数千个问题,但没有找到任何有用的答案。

我必须创建一个文件(包含字符串),从下载应用程序或我要打开我的应用程序的文件管理器中单击它。 (只是我的应用程序)

我可以根据需要创建文件:文件名,文件扩展名或mime tipe

每次尝试都失败了:或者我的应用拦截了任何文件,或者我的应用没有拦截我的文件

所以,我的问题是:

1)如何根据需要创建文件?

2)如何为该文件创建意图过滤器?

这么多

1 个答案:

答案 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>

我希望第三方文件管理器不会创建更多的熵