2016-05-04 12 views
1

私は内部ストレージフォルダに多数の動画を保存しました。その後、ユーザーはこの特定のフォルダ内のこれらのビデオの1つを選択できるようにします。私はACTION_GET_CONTENTを使って、別のアプリケーションが私のためにこれをやり遂げようとしましたが、成功することなく、他のディレクトリのファイルブラウザを開くだけでした。私が今持っている何Android - 内部ストレージフォルダからファイルを選択してください

は次のとおりです。

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

だから私は、私が何か間違ったことか、それはこのようなことは不可能であるのです、と思いまして。不可能な場合:私が欲しいことをやり遂げることを可能にするライブラリがありますか、あるいは最後の手段として自分自身を実装する方法についての方向性はありますか?事前

+2

は「私が何か間違ったことか、それは不可能このようなものですしています」 - サードパーティ製アプリがgetFilesDir '内のファイルへのアクセスを()'持っていません。 "ライブラリがありますか" - ライブラリの推奨事項を尋ねるのはスタックオーバーフローのトピックではありません。それは言われている、[ここ10(またはそうです)](http://android-arsenal.com/tag/35)。 – CommonsWare

答えて

3

おかげでそのライブラリをご覧ください - Material File Picker
それは.withPath(Utility.getOwnVideosDirectory(getContext()).getAbsolutePath())を使用して、指定されたパスを持つダイアログを表示することができます。

全体の作成コード:

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(); 
関連する問題