14

我正在 Android 4.0.3 设备上开发。如何为我的应用打开文件浏览器?是否有内置于 Android SDK 的?我必须自己写吗?

我不希望我的应用程序依赖于安装单独应用程序进行文件浏览的用户。

4

4 回答 4

22

要从文件浏览器获取文件,请使用以下命令:

        Intent fileintent = new Intent(Intent.ACTION_GET_CONTENT);
        fileintent.setType("gagt/sdf");
        try {
            startActivityForResult(fileintent, PICKFILE_RESULT_CODE);
        } catch (ActivityNotFoundException e) {
            Log.e("tag", "No activity can handle picking a file. Showing alternatives.");
        }

我不太确定 gagt/sdf 的用途......它似乎在我的应用程序中适用于任何文件。

然后添加这个方法:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Fix no activity available
        if (data == null)
            return;
        switch (requestCode) {
        case PICKFILE_RESULT_CODE:
            if (resultCode == RESULT_OK) {
                String FilePath = data.getData().getPath();
                //FilePath is your file as a string
            }
        }

如果用户没有由他们的 OEM 安装或预安装的文件管理器应用程序,您将不得不实现自己的。你不妨给他们一个选择。

于 2013-01-30T16:43:25.010 回答
5

我希望这个可以帮助您选择文件:

public void performFileSearch() {

    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
    // browser.
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);

    // Filter to only show results that can be "opened", such as a
    // file (as opposed to a list of contacts or timezones)
    intent.addCategory(Intent.CATEGORY_OPENABLE);

    // Filter to show only images, using the image MIME data type.
    // If one wanted to search for ogg vorbis files, the type would be "audio/ogg".
    // To search for all documents available via installed storage providers,
    // it would be "*/*".
    intent.setType("image/*");

    startActivityForResult(intent, READ_REQUEST_CODE);
}

代码来自此文档:
https
://developer.android.com/guide/topics/providers/document-provider.html 请参阅它以获取更多信息。

于 2018-03-17T05:08:31.960 回答
2

如果有人仍然需要它来更新版本,它会通过 Google 为 SDK >= 4.4 开发的存储访问框架进行更新。查看此 Google 网站了解更多详情:

https://developer.android.com/guide/topics/providers/document-provider.html

于 2017-02-17T08:24:38.710 回答
0

没有跨所有设备安装的单一文件管理应用程序。您可能希望您的应用也能在运行 Android 3.x 或更低版本的设备上运行。您最好的选择是编写自己的文件管理器。这并不像听起来那么努力,网上已经有很多关于这方面的代码。

于 2013-01-30T16:05:43.223 回答