在我的圖像庫應用程序中,我使用媒體內容提供程序圖像來充實回收站視圖。長按一個圖像,我讓用戶選擇重命名該圖像文件。因此,我在回收視圖中爲每個圖像都有完整的文件路徑(例如: - /storage/sdcard1/DCIM/100ANDRO/ak.jpg)。然後我想重命名該文件。將文件路徑轉換爲TreeUri(存儲訪問框架)
現在的問題是,由於提供的文件路徑是外部SD卡的文件路徑,所以需要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
不,實際上這對於我正在開發的應用程序的類型來說是不可能的 –