Android Intent-Filter自定义文件类型



首先,我已经搜索了SO和互联网关于这个,没有解决方案工作。我一直试图使用文件浏览器和dexplorer 根浏览器选择*。

这是我目前的意图过滤器(尽管它经历了大量的修改,尝试了许多不同的想法):

<activity android:name=".Viewer"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" />
            </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:host="*" />
                <data android:pathPattern=".*\.las" />
            </intent-filter>
</activity>

有人知道如何触发自定义文件类型响应吗?我希望能够启动我的应用程序并从文件浏览器和互联网下载文件后获取文件的文件路径。

非常感谢!

看起来文件类型意图过滤器的大问题是分配不同的程序以不同的方式处理意图。我无法让AndExplorer对我发现的任何东西做出回应。(让它打开.eva文件)。然而,我确实得到了文件管理器和astro文件浏览器工作使用下面的意图过滤器。作为一种替代方法,让应用程序启动一个活动来选择文件,适用于我尝试过的所有文件浏览器(如果你使用文件管理器,它不会像其他文件管理器那样返回数据,所以必须做出一些调整(只是在调试中看到这一点,没有编写代码来修复它),但相反,我只是在创建一个自定义文件选择器,因为它避免了其他文件管理器用户可能遇到的任何问题):…

<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" android:host="*"
                android:pathPattern=".*\.eva" />
            <data android:scheme="file" android:host="*"
                android:pathPattern=".*\.eva" />
        </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="*/*" />
             <data android:scheme="content" android:host="*"
                android:pathPattern=".*\.eva" />
            <data android:scheme="file" android:host="*"
                android:pathPattern=".*\.eva" />
        </intent-filter>

    Intent intent2Browse = new Intent();
    Toast.makeText(this, R.string.Choose_EVAKey_File, Toast.LENGTH_LONG).show();
    intent2Browse.addCategory(Intent.CATEGORY_OPENABLE);
    intent2Browse.setType("application/xml");
    intent2Browse.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent2Browse,Select_EVA_FILE);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == Select_EVA_FILE && resultCode == RESULT_OK) {
        Uri currFileURI = data.getData();
        path2Key = currFileURI.getPath();

最新更新