私のイメージギャラリーのアプリケーションでは、リサイクラビューを拡張するためにメディアコンテンツプロバイダイメージを使用します。画像を長く押すと、その画像ファイルの名前を変更するユーザーオプションが与えられます。だから、私はリサイクラービューで各画像の完全なファイルパス(例: - /storage/sdcard1/DCIM/100ANDRO/ak.jpg)を持っています。次に、そのファイルの名前を変更します。ファイルをPATHからTreeUri(ストレージアクセスフレームワーク)に変換
提供されているファイルパスがExternal SD Cardのもので、Android 5の場合& upのため、ファイルを書き込むためにSAF(ストレージアクセスフレームワーク)が必要です。
ので、一般的に、我々はSAFを使用してファイルの名前を変更するためにこのコードを使用: -
public void onActivityResult(int requestCode, int resultCode, Intent resultData){
if (resultCode == RESULT_OK) {
Uri treeUri = resultData.getData();
getContentResolver().takePersistableUriPermission(treeUri,
Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
DocumentFile newFIle = pickedDir.createFile("text/plain","MyFile")
// or rename as
pickedDir.renameTo("fdtd.jpg");
} else {
Log.d("test","NOt OK RESULT");
}
}
しかし、我々はTreeUriを知っているとき、それはケースです。ここに私の場合、私はfleの道を知っているので、それをTreeUriに変換したい。
アプリケーションを変更して、ユーザーが 'ACTION_OPEN_DOCUMENT'または' ACTION_OPEN_DOCUMENT_TREE'でファイルを選択できるようにします。ストレージプロバイダからのパスからUriへの変換はありません。 – CommonsWare
いいえ、実際には、私が開発しているアプリケーションのタイプでは不可能です –