Android FileType查看器

时间:2013-01-27 21:09:34

标签: android android-intent file-type file-browser

好吧,我有一个有自定义文件夹的应用程序:

我想打开以下类型:

protected String[] acceptableTypes = {"jpg", "gif", "png", "bmp", "pdf", "txt"};

每当我点击文件时,我都可以使用以下代码打开图片或至少jgps:

MediaScannerConnection.scanFile(((Activity) getContext()), new String[] { filePath }, null, 
                new MediaScannerConnection.OnScanCompletedListener() { 
            @Override public void onScanCompleted(String path, Uri uri) { 
                Intent intent = new Intent(Intent.ACTION_VIEW); 
                intent.setDataAndType(uri, "image/*"); 
                ((Activity) getContext()).startActivityForResult(intent, ConferenceActivity.ACTIVITY_SELECT_IMAGE); 
            } 
        });

现在我该怎样过滤这个,以便用正确的程序打开正确的文件类型?

2 个答案:

答案 0 :(得分:0)

阅读http://developer.android.com/guide/components/intents-filters.html,了解如何执行此操作的简介。从该页面上的“图像/”中搜索。

您需要在应用程序的清单文件中声明文件类型。请确保使用mimeType(如“image / *”或“image / png”)声明它们,以便您可以从其他应用程序(如gmail)打开文件。

在您的活动中,您可以添加以下内容:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <data android:mimeType="image/*" />
</intent-filter>

另一个问题是你还必须同时处理“文件”方案和“内容”方案。要查看我的意思,在Jellybean中从Gmail打开文件,您会看到提供的URI是内容类型而不是典型的文件类型。

答案 1 :(得分:0)

你只需要在setDataAndType中传递正确的mimeType。您可以使用URLConnection.guessContentTypeFromName

获取文件的mimeType

这样的事情:

Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
String mimeType = URLConnection.guessContentTypeFromName(filePath);
i.setDataAndType(Uri.fromFile(new File(filePath)), mimeType);
startActivity(i);