Android Intent-Filter自定义文件类型

时间:2011-07-11 21:42:13

标签: android intentfilter file-type

首先,我已经搜索了SO和互联网,没有解决方案。我一直在尝试使用文件浏览器 AndExplorer Root Explorer 来选择* .las文件并触发我的应用程序。

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

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

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

非常感谢!

1 个答案:

答案 0 :(得分:3)

看起来文件类型意图过滤器的一个大问题是,不同的程序分配处理意图的方式不同。我无法让AndExplorer回应我发现的任何事情(即打开.eva文件)。但是我确实使用下面的intent过滤器来获取文件管理器和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();

...