次のコードは、ユーザーがファイルを選択できるように、ファイルマネージャを起動するために使用されます。選択したファイルの親パスが使用できないのはなぜですか?
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, REQUEST_CODE_CUSTOM_FOLDER);
ユーザーがフォルダでダウンロードファイルfoo.txtのを選択した場合、返されたファイルのパスが
/document/2071-13DB:Download/foo.txt
です
このファイルを読み取る際に問題はありません。アプリがフォルダにテキストファイル(foo_new.txt)を書き込もうとすると「/文書/ 2071-13DBを:ダウンロード」、それは次の例外を取得します:
Error:Directory '/document/2071-13DB:Download' could not be created.
誰もがこの上でいくつかの光を当てますか?私は、ユーザーがファイルを保存するためのアプリのフォルダを選択できるようにしようとしています。
迅速な解明に感謝します。アプリケーションがファイルパスを取得する方法は次のとおりです。intentData.getData()。getPath()ここで、intentDataはonActivityResult(int requestCode、int resultCode、Intent intentData)です。 – Hong
@Hong:これもファイルパスではなく、 '/ questions/39337012 /なぜ親ファイルの選択パスが使用できないのか'はファイルパスです。 'Uri'のスキームが' file'だった場合、 'getPath()' *はファイルパスを返しますが、おそらく便利なものではありません(例えば、リムーバブルストレージ上のものを指します)。 – CommonsWare
再度ご確認いただきありがとうございます。 URIは次のとおりです。content://com.android.externalstorage.documents/document/2071-13DB%3ADownload%2Ffoo.txt – Hong