如何使用意图选择文件浏览器来选择文件

时间:2012-03-29 10:42:33

标签: android android-intent

如何使用意图提示用户选择“完成操作”来选择应用程序来选择文件(假设有一些应用程序来浏览设备中的文件)

我想使用扩展程序过滤文件..(例如:* .sav,*。props)

提前谢谢

4 个答案:

答案 0 :(得分:42)

您可以使用以下内容:

    ....  
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("file/*");
    startActivityForResult(intent, YOUR_RESULT_CODE);
    .... 

但我真的怀疑你可以设置过滤第三方文件浏览器。 或者您可以尝试使用此文件对话框:http://code.google.com/p/android-file-dialog/

答案 1 :(得分:7)

这将打开内置文件资源管理器(如果可用),否则将要求您选择已安装的文件资源管理器。

private void showFileChooser() {

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    //intent.setType("*/*");      //all files
    intent.setType("text/xml");   //XML file only
    intent.addCategory(Intent.CATEGORY_OPENABLE);

    try {
      startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), FILE_SELECT_CODE);
    } catch (android.content.ActivityNotFoundException ex) {
      // Potentially direct the user to the Market with a Dialog
      Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show();
    }
}

答案 2 :(得分:2)

它可以帮助您选择一个doc文件,您可以根据需要更改操作

        Intent intent;
        if (VERSION.SDK_INT >= 19) {
            intent = new Intent("android.intent.action.OPEN_DOCUMENT");
            intent.setType("*/*");
        } else {
            PackageManager packageManager =getActivity().getPackageManager();
            intent = new Intent("android.intent.action.GET_CONTENT");
            intent.setType("file*//*");
            if (packageManager.queryIntentActivities(intent,MEDIA_TYPE_IMAGE).size() == 0) {
                UserToast.show(getActivity(), getResources().getString(R.string.no_file_manager_present));
            }
        }
        if (getActivity().getPackageManager().resolveActivity(intent, NativeProtocol.MESSAGE_GET_ACCESS_TOKEN_REQUEST) != null) {
            startActivityForResult(intent, UPLOAD_FILE);
        }

答案 3 :(得分:-8)

// check here to KitKat or new version and this will solve the Samsung file explore issue too.  
boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;

if (isKitKat) {
    Intent intent = new Intent(); 
    intent.setType("*/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent,FILE_SELECT_CODE);
} else {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("*/*");
    startActivityForResult(intent,FILE_SELECT_CODE);
}