自定义扩展程序文件未在我的应用中打开

时间:2014-05-13 10:45:12

标签: android android-intent intentfilter file-type

我想要通过我的应用程序打开自定义扩展文件(* .xyz)。在应用程序清单文件中,我写了以下内容:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="http"    android:host="*" android:pathPattern=".*\\.xyz" />
        <data android:scheme="https"   android:host="*" android:pathPattern=".*\\.xyz" />
        <data android:scheme="content" android:host="*" android:pathPattern=".*\\.xyz" />
         <data android:scheme="file"   android:host="*" android:pathPattern=".*\\.xyz" />
</intent-filter>

之后,我将在设备上安装我的应用程序,并将包含Sample.xyz邮件的邮件作为附件发送。当我尝试在邮件客户端中点击附件以打开附件时,它将出现一个名为

的错误

No app can open this attachment for viewing

即使我下载附件然后尝试打开它,它也会出错

Can't open file

有人可以建议可能出现的问题吗?

1 个答案:

答案 0 :(得分:2)

您的过滤器不匹配,因为它不是同时的http https文件和内容 - 您需要不同的<intent-filter>&#39; s,请查看此处: https://github.com/ligi/PassAndroid/blob/master/src/main/AndroidManifest.xml 并且只为* .pkpass执行我为* .xyz所做的事情,如此:

    <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:pathPattern=".*\\.xyz"
            android:scheme="http" />
    </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:pathPattern=".*\\.xyz"
            android:scheme="https" />
    </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:pathPattern=".*\\.xyz"
            android:scheme="file" />
    </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:pathPattern=".*\\.xyz"
            android:scheme="content" />
    </intent-filter>