用于自定义文件扩展名的android意向过滤器

用于自定义文件扩展名的android意向过滤器,android,android-intent,Android,Android Intent,我正在尝试制作一个android应用程序来打开扩展名为.abc的文件,这是我在android清单xml中的应用程序部分 <application android:label="@string/app_name" android:icon="@drawable/icon"> <activity android:name="com.example.app.ActName" android:label="AppName"> <intent-filt

我正在尝试制作一个android应用程序来打开扩展名为.abc的文件,这是我在android清单xml中的应用程序部分

<application android:label="@string/app_name" android:icon="@drawable/icon">
    <activity android:name="com.example.app.ActName" android:label="AppName">
        <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:mimeType="image/jpeg"/>
        </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:scheme="file" />
            <data android:mimeType="*/*" />
            <data android:pathPattern=".*\\.abc" />
            <data android:host="*" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

最后,这不起作用-当我在ES文件浏览器中单击名为“name.abc”的文件时,它会询问我是否要以文本或图像等形式打开该文件,而实际上它应该只在我的应用程序中打开该文件

我做错了什么?通过在任何文件管理器中单击具有相应扩展名的文件来启动应用程序的适当意图过滤器是什么? upd。
看起来不同的安卓系统和不同的文件浏览器以不同的方式工作-一个意图过滤器在“ES文件浏览器”的4.2和默认文件管理器的4.0.4上工作正常,但在“Total Commander”的4.2和4.0.4以及“ES文件浏览器”的4.0.4上根本不工作。

首先,示例中的第一个
intent过滤器
使用MIME类型
image/jpeg
jpeg
是您的
.abc
扩展名吗

我认为这可能有三个原因不起作用:

  • 您需要添加更多MIME类型。尝试添加以下内容:

    <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:mimeType="application/abc"/>
    </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:mimeType="application/octet-stream"/>
    </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:scheme="content" />
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*\\.abc" />
        <data android:host="*" />
    </intent-filter>
    

  • 首先,示例中的第一个
    intent过滤器
    使用MIME类型
    image/jpeg
    jpeg
    是您的
    .abc
    扩展名吗

    我认为这可能有三个原因不起作用:

  • 您需要添加更多MIME类型。尝试添加以下内容:

    <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:mimeType="application/abc"/>
    </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:mimeType="application/octet-stream"/>
    </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:scheme="content" />
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*\\.abc" />
        <data android:host="*" />
    </intent-filter>
    

  • 使用相同的代码,我可以在长按“name.abc”时选择文本、音频、视频和图像。@PratikSharma,我认为这不是它应该工作的方式。我改变了问题来描述它。使用相同的代码,我可以在长按“name.abc”时选择文本、音频、视频和图像。@PratikSharma,我认为这不是它应该工作的方式。我换了个问题来描述它。它似乎不适用于谷歌和谷歌硬盘的“文件”应用程序。你知道如何支持吗?谷歌和谷歌硬盘的“文件”应用程序似乎不起作用。你知道如何支持吗?