2016-05-04 6 views
1

Ich habe eine Reihe von Videos in einem internen Speicherordner gespeichert. Danach möchte ich, dass der Benutzer eines dieser Videos in diesem spezifischen Ordner auswählen kann. Ich habe versucht, ACTION_GET_CONTENT zu verwenden, um eine andere App dies für mich tun zu lassen, ohne Erfolg, da es einfach einen Dateibrowser in einem anderen Verzeichnis öffnet.Android - Wählen Sie die Datei aus dem internen Speicherordner

Was ich habe, ist jetzt:

public static File getOwnVideosDirectory(Context context) { 
    String ownVideosDirPath = 
      context.getFilesDir().getAbsolutePath() + File.separator + "OwnVideos"; 
    File ownVideosDir = new File(ownVideosDirPath); 
    if (!ownVideosDir.exists()) { 
     ownVideosDir.mkdirs(); 
    } 
    return ownVideosDir; 
} 

private void dispatchExistingVideo() { 
    Log.d(LOG_TAG, "> dispatchExistingVideo"); 
    Intent videoPicker = new Intent(Intent.ACTION_GET_CONTENT); 
    File ownVideosDir = Utility.getOwnVideosDirectory(getContext()); 
    videoPicker.setDataAndType(Uri.fromFile(ownVideosDir), "video/*"); 
    if (videoPicker.resolveActivity(getContext().getPackageManager()) != null) { 
     startActivityForResult(videoPicker, REQUEST_EXISTING_VIDEO); 
    } 
} 

Also ich frage mich, bin ich etwas falsch oder ist es so unmöglich. Wenn es nicht möglich ist: Gibt es eine Bibliothek, ... die mir erlaubt, das zu tun, was ich will, oder irgendeine Richtung, wie ich das selbst als letzten Ausweg umsetzen könnte?

Vielen Dank im Voraus

+2

„mache ich etwas falsch oder ist es unmöglich, wie diese“ - Anwendungen von Drittanbietern haben keinen Zugriff auf Ihre Dateien in 'getFilesDir()'. "Gibt es eine Bibliothek?" - Fragen zu Empfehlungen von Bibliotheken sind nicht Thema für Stack Overflow. Davon abgesehen [sind hier zehn oder so] (http://android-arsenal.com/tag/35). – CommonsWare

Antwort

3

zu dieser Bibliothek einen Blick Bitte - Material File Picker
Es ermöglicht mit .withPath(Utility.getOwnVideosDirectory(getContext()).getAbsolutePath()) einen Dialog mit dem angegebenen Pfad zu zeigen.

Die ganze Schöpfung Code:

new MaterialFilePicker() 
    .withActivity(this) 
    .withRequestCode(1) 
    .withFilter(Pattern.compile(".*\\.txt$")) // Filtering files and directories by file name using regexp 
    .withFilterDirectories(true) // Set directories filterable (false by default) 
    .withHiddenFiles(true) // Show hidden files and folders 
    .withPath(Utility.getOwnVideosDirectory(getContext()).getAbsolutePath()) 
    .start(); 
Verwandte Themen