15

ファイルマネージャー(インストールされている場合)を開くインテントを作成する必要があり、ファイルマネージャーにユーザーにtxtファイルのみを表示させたいので、ユーザーは間違った拡張子のファイルを選択できませんでした。

    private static final int FILE_SELECT_CODE = 0;

private void showFileChooser() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);


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

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case FILE_SELECT_CODE:      
    if (resultCode == Activity.RESULT_OK) {  
        // Get the Uri of the selected file 
        Uri uri = data.getData();
        String path = uri.getPath();
        input = new File(path);
        try {
            txtParser = new TxtFileParser(input);
        } catch (FileNotFoundException e) {
            /* Exception handler must be here! */
        }
    }           
    break;
}
    super.onActivityResult(requestCode, resultCode, data);
}

私はなんとかこれを行うことができました。しかし、txt拡張機能を定義する方法がわかりません。

4

2 に答える 2

16

ファイルマネージャーにtxtファイルのみをユーザーに表示させたいので、ユーザーは間違った拡張子のファイルを選択できませんでした

それは文字通り不可能です。text/plainの代わりにのMIMEタイプを使用できますが、次のようになります*/*

  • .txtこれが拡張子の付いたファイルのみを返すという保証はありません
  • ACTION_GET_CONTENTそのMIMEタイプを処理できるアプリがデバイス上にあるという保証はありません
  • 「ファイルマネージャ」があなたのMIMEタイプを尊重するという保証はありません。とにかくすべてのファイルを表示することを選択できます
于 2013-01-31T14:12:17.967 に答える
0

MaterialFilePicker()について調査します。

new MaterialFilePicker()。withFilter(Pattern.compile("。*\。txt$"))。start();

上記のように、パターンマッチングを使用してそれを行うことができます。

于 2017-10-11T18:09:18.383 に答える