![](/img/trans.png)
[英]Does SAF(Storage Access Framework) solve the SD card WRITE issue in Android 4.4 (KitKat)?
[英]Android, Java, Create directory on SD card programmatically using Storage Access Framework (SAF)
我的问题是我无法在插入 Android 便携式设备的 SD 卡上创建目录。 下面是我要开始工作的 Java 代码:我正在尝试在/storage/BF4F-1107/
下创建目录sable
:
public class AnActivity extends AppCompatActivity
{
private static final int N_CREATE_DIRECTORY = 1;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// SD card
String s_sdCardStorage = "/storage/BF4F-1107/";
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("file/*");
intent.putExtra(Intent.EXTRA_TITLE, s_destFilePath);
startActivityForResult(intent, N_CREATE_DIRECTORY);
// HERE
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == N_CREATE_DIRECTORY)
{
if(data != null)
{
Uri uri = data.getData();
DocumentFile docFileSDCardStorage = DocumentFile.fromSingleUri(this, uri);
try
{
DocumentFile docFileDir = docFileSDCardStorage.createDirectory("sable");
}
catch(UnsupportedOperationException exn)
{
System.out.println(exn.getMessage());
}
}
}
}
}
会发生什么:
onCreate()
中的代码被执行。// HERE
处阻塞。/storage/BF4F-1107/
的“对话框”和一个我“按下”的按钮Save
。onActivityResult()
中的代码就会被执行。 但结果是/storage/BF4F-1107/
下的目录sable
没有创建。 并且执行路径通过 catch 子句,引发异常UnsupportedOperationException
并在 System.out.println( exn.getMessage System.out.println(exn.getMessage());
.
编辑 2:在/storage/BF4F-1107/
下创建一个空文件_storage_BF4F-1107_
。
你能帮我让这段代码工作吗?
此外,我希望静默创建目录sable
。 我不希望用户必须触摸“保存”。
I am trying to use the Storage Access Framework
( https://developer.android.com/training/data-storage/shared/documents-files ) because the mkdirs
method of the java.io.File
class doesn't work (I当我尝试在 SD 卡上创建目录时获得权限被拒绝异常)。
编辑:我的 Android 版本是 6.0.1
谢谢你。
使用 ACTION_OPEN_DOCUMENT_TREE 让用户选择 de SD 卡。
之后,您可以在所选目录中创建尽可能多的文件和目录。
如果您只想使用 SAF 创建一个文件,请使用用户选择位置和文件名的 ACTION_CREATE_DOCUMENT。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.