6

Czy Android może w dowolny sposób przeglądać i wybierać dowolny plik z karty SD za pomocą intencji? Niektóre rzeczy, takie jak:Wybierz plik z karty SD za pomocą intencji

String uri = (Environment.getExternalStorageDirectory()).getAbsolutePath(); 
Intent i = new Intent(Intent.ACTION_PICK,Uri.parse(uri)); 

Próbuję wysłać plik do innych urządzeń za pomocą Bluetooth. Mogę wysłać, jeśli podam pełną ścieżkę do nazwy pliku w moim kodzie. Chcę, aby moi użytkownicy wybierali plik, który powinien zostać wysłany.

Odpowiedz

7

można użyć następujących kodu

Intent mediaIntent = new Intent(Intent.ACTION_GET_CONTENT); 
mediaIntent.setType("video/*"); //set mime type as per requirement 
startActivityForResult(mediaIntent,REQUESTCODE_PICK_VIDEO); 

Następnie można uzyskać ścieżkę w onActivityResult

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQUESTCODE_PICK_VIDEO 
      && resultCode == Activity.RESULT_OK) { 
     Uri videoUri = data.getData(); 
     Log.d("", "Video URI= " + videoUri); 


    } 
} 
+0

Jeśli ustawię mediaIntent.setType ("video/*"), otwiera się przeglądanie zdjęć i filmów. Chcę zrobić wspólne wyszukiwanie, w którym powinienem wybrać dowolny plik. Może plik muzyczny, plik APK i może być cokolwiek. Czy to możliwe ? – user2978042

+1

następnie użyj setType ("*/*") –

+0

Ale mówi android.content.ActivityNotFoundException: Nie znaleziono żadnej aktywności do obsługi Intent {act = android.intent.action.GET_CONTENT typ = /} – user2978042

5

Dla ogólnego użytku przeglądający to (na przykład plik muzyczny):

Intent intent = new Intent(); 
intent.setType("*/*"); 
if (Build.VERSION.SDK_INT < 19) { 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    intent = Intent.createChooser(intent, "Select file"); 
} else { 
    intent.setAction(Intent.ACTION_OPEN_DOCUMENT); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    String[] mimetypes = { "audio/*", "video/*" }; 
    intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes); 
} 
startActivityForResult(intent, Constants.REQUEST_BROWSE); 

i odbierać przeglądane dane tutaj:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == Constants.REQUEST_BROWSE 
      && resultCode == Activity.RESULT_OK && data != null) { 
     Uri uri = data.getData(); 
     if (uri != null) { 
      // TODO: handle your case 
     } 
    } 
} 
Powiązane problemy