2015-01-11 7 views
10

次のコードスニペットを以前の投稿から慎重にコピーして、シミュレータ上でもNexus 9デバイス上でも動作します。アクションオープンドキュメントツリーは空のみを返します最近のフォルダ

しかし、私が得るのは空のRecentフォルダです。ファイルを書き込むコードは決して手に入りません。

適切なドキュメントツリーを取得するには、何を変更する必要がありますか?

private void testDocumentTree() { 

      Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); 
      startActivityForResult(intent, 42); 
     } 

     public void onActivityResult(int requestCode, int resultCode, Intent resultData) { 
      String TAG = "onActivityResult"; 
      if (resultCode == RESULT_OK) { 
       Uri treeUri = resultData.getData(); 
       DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri); 

       // List all existing files inside picked directory 
       for (DocumentFile file : pickedDir.listFiles()) { 
        Log.d(TAG, "Found file " + file.getName() + " with size " + file.length()); 
       } 

       // Create a new file and write into it 
       DocumentFile newFile = pickedDir.createFile("text/plain", "My Novel"); 
       try { 
        OutputStream out = getContentResolver().openOutputStream(newFile.getUri()); 
        out.write("A long time ago...".getBytes()); 
        out.close(); 
       } catch (FileNotFoundException e) { 
        Log.d(TAG, "File Not Found, reason: ", e); 
       } catch (IOException e) { 
        Log.d(TAG,"IOException, reason: ", e); 
       } 
      } 
     } 
+0

FWIW、私はここでの問題を追加しました:https://code.google.com/p/android/issues/detail?id=202116 –

答えて

0

ない、これはあなたが求めているものであれば必ずいますが、唯一、最近のフォルダを見ているフォルダピッカーで、あなたが表示/非表示のSDカードを切り替えることができオーバーフローメニューがあります。

Overflow menu

+0

はこれをしようとしました。それ以外のオプションは表示されず、Recent(エミュレータ上)だけが表示されます。 –

+0

エミュレートされたデバイスを作成するときにsdカードサイズを設定しましたか? –

2

私はあなたがそうであるように同じ問題を抱えていました。

は、私は私が私のために引き出し

enter image description here

+0

ありがとう!私はなぜ彼らはダウンロードされたファイルを表示するか、またはデフォルトで写真であるのだろうかと思っています.... –

0

に「内部ストレージ」を参照してくださいすることができました。その後

enter image description here

オーバーフローメニューの「表示内部ストレージ」をクリックしてエミュレータでは動作しますが、実際のAndroid 5端末では動作しません。 私はGoogleアンドロイドディレクトリ選択サンプルをチェックしても動作しませんでした。

これは確かに、一部の携帯電話でその効果が見えるバグです。

Googleにこのバグを報告し、修正されるまでお待ちください。それまでは、あなたのアプリでメモリカードへのアクセスを制限するしかありません。それはあなたがしたくないことです。しかし、私はGoogleがそれを修正する前に私たちができることは何もないと思う。

これについての回避策がある場合は、私にも教えてください。

1

他の人は、ユーザーが手動で有効にする必要があるドキュメントUIのオプションについて説明しました。ただし、別のオプションがあります。 ACTION_OPEN_DOCUMENT、ACTION_GET_CONTENT、ACTION_CREATE_DOCUMENT、またはACTION_OPEN_DOCUMENT_TREEインテントにこれらのエクストラを追加してください。ストレージ設定の[エクスプローラ]ボタンは、ドキュメントUIアプリを開いているときにこれらの機能を使用します。私は最初の1つは内部ストレージとsdcardを表示するのに十分だと思います。他には良いことがあります。

intent.putExtra("android.content.extra.SHOW_ADVANCED", true); 
intent.putExtra("android.content.extra.FANCY", true); 
intent.putExtra("android.content.extra.SHOW_FILESIZE", true); 
関連する問題