【问题标题】:How create file to match custom intent filter to open my app?如何创建文件以匹配自定义意图过滤器以打开我的应用程序?
【发布时间】:2017-07-13 09:17:25
【问题描述】:

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

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

我可以根据需要创建文件:文件名、文件扩展名或 mime 提示

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

所以,我的问题是:

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

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

这么多

【问题讨论】:

    标签: android android-intent intentfilter


    【解决方案1】:

    有时候android sdk做的不好,是这样的:

    使用带有 Stock 7.1.2 的 Nexus 6p,点击下载的文件会根据您的应用生成不同的意图。我强调设备没有外部应用程序和固件是库存的事实。在不同系统应用生成的意图列表下方

    来自下载

    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>
    

    我希望第三方文件管理器不要产生更多的熵

    【讨论】:

    • 所以您明确只对 json 文件感兴趣?
    • 我创建文件,我需要阅读它(如 word :D)。我使用 json 将数据存储在文件中。但我需要阅读我的文件而不是所有文件
    • android:mimeType="application/json" 表示您设备上的任何 json 文件都将随您的应用一起打开
    • 是的,这是从下载应用中拦截意图的唯一方法
    • 谢谢,我在打开 .json 文件时遇到了问题,效果很棒。
    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多