如何使用Android Storage Access Framework进行文件和数据的访问和存储[页12]
2023-08-23次
javaprivate static final int REQUEST_CODE = 42;
private void requestStoragePermission() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
Uri treeUri = data.getData();
getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// Use the provided UI to access the directory
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
// Use pickedDir to access files within the directory
}
}
在请求文件访问权限时,我们使用Intent.ACTION_OPEN_DOCUMENT_TREE操作启动一个系统UI,让用户选择目标文件夹。一旦用户选择了文件夹,我们需要使用从结果Intent中获取的URI调用getContentResolver().takePersistableUriPermission()来授权文件访问权限。这将授权我们的应用程序在不再提示用户的情况下访问该目录。