我正在用Java制作Android应用程序。我尽量不使用MANAGE_EXTERNAL_STORAGE将其上传到Google。(Google警告我不要使用它。)
打开应用程序时,我想在下载文件夹中创建"App“中的文件夹。
获得WRITE_EXTERNAL_PERMISSION和READ_EXTERNAL_PERMISSION后,我想显示下载文件夹和客户按下“保存”按钮创建"App“文件夹。(见附图)
我认为ACTION_OPEN_DOCUMENT_TREE是最好的方法,我的代码如下所示。
//after getting permission
Integer NEW_FOLDER_REQUEST_CODE=810;
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, NEW_FOLDER_REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) { if (requestCode ==
NEW_FOLDER_REQUEST_CODE)
{ if (data != null) {
Uri currentUri = data.getData();
DocumentFile pickedDir =
DocumentFile.fromTreeUri(this, currentUri);
DocumentFile newDir =
pickedDir.createDirectory("App"); } } }
}
我可以去内部存储,但不是Dowoload文件夹。
我该怎么走?
未显示新创建文件夹的名称输入字段(默认值: App)。
我该怎么展示呢?
发布于 2022-06-14 07:09:11
在得到许可后,
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
StorageManager sm = (StorageManager) getApplicationContext().getSystemService(Context.STORAGE_SERVICE);
Intent intent = sm.getPrimaryStorageVolume().createOpenDocumentTreeIntent();
String startDir = "Documents";
Uri uri = intent.getParcelableExtra("android.provider.extra.INITIAL_URI");
String scheme = uri.toString();
Log.d(TAG, "INITIAL_URI scheme: " + scheme);
scheme = scheme.replace("/root/", "/document/");
scheme += "%3A" + startDir;
uri = Uri.parse(scheme);
intent.putExtra("android.provider.extra.INITIAL_URI", uri);
Log.d(TAG, "uri: " + uri.toString());
startActivityForResult(intent, NEW_FOLDER_REQUEST_CODE);
return;
}
和
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) { if (requestCode ==
NEW_FOLDER_REQUEST_CODE)
{ if (data != null) {
Uri currentUri = data.getData();
DocumentFile pickedDir =
DocumentFile.fromTreeUri(this, currentUri);
DocumentFile newDir =
pickedDir.createDirectory("App"); } } }
}
执行此代码时,将显示内部存储。
选择“下载”文件夹,然后单击“使用此文件夹”和“允许”。
然后在“下载”文件夹中创建“App”文件夹。
https://stackoverflow.com/questions/72611880
复制相似问题