2012-03-29 34 views
15

Cách sử dụng ý định nhắc người dùng chọn "hoàn tất tác vụ" để chọn ứng dụng để chọn tệp (giả sử có một vài ứng dụng để duyệt tệp trong thiết bị)Cách sử dụng ý định chọn trình duyệt tệp để chọn tệp

tôi muốn lọc các tập tin sử dụng một phần mở rộng .. (ví dụ:. * .sav, * .props)

Cảm ơn bạn trước

+0

lần chủ đề này, http://stackoverflow.com/questions/5537907/view -file-path-in-a-file-manager-as-android-intent Nếu tôi không sai. Điều này có thể giúp bạn. –

Trả lời

39

bạn có thể sử dụng một cái gì đó như thế này:

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

B Tôi thực sự nghi ngờ rằng bạn có thể đặt trình duyệt tệp của bên thứ ba cho bộ lọc. Hoặc bạn có thể thử sử dụng hộp thoại tệp này: http://code.google.com/p/android-file-dialog/

+2

Cảm ơn các liên kết .. :) nó thực sự là đơn giản và hữu ích filebrowser –

+6

Tôi cần phải sử dụng 'intent.setType (" */* ")' thay thế. Không có loại MIME nào mà tôi biết bắt đầu bằng 'file/'. – Alicia

-5

// kiểm tra ở đây để KITKAT hoặc phiên bản mới và điều này cũng sẽ giải quyết sự cố tệp samsung.

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); 
} 
+9

Mã trong if/else đang thực hiện tương tự – roplacebo

6

Thao tác này sẽ mở trình khám phá tệp tích hợp nếu có, nếu không sẽ yêu cầu bạn chọn trình khám phá tệp mà bạn đã cài đặt.

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(); 
    } 
} 
0

Nó có thể giúp bạn chọn một file doc và u có thể thay đổi hành động theo nhu cầu của bạn

 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); 
     } 
Các vấn đề liên quan