要在Android上使用存储访问框架(SAF)以编程方式在SD卡上创建目录,可以按照以下步骤进行:
private static final int REQUEST_CODE_PERMISSIONS = 1001;
private static final String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
// 在onCreate方法中调用requestSDCardPermissions方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestSDCardPermissions();
}
// 请求用户授权访问SD卡
private void requestSDCardPermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(PERMISSIONS, REQUEST_CODE_PERMISSIONS);
}
}
}
// 处理用户授权结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE_PERMISSIONS) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授权访问SD卡
createDirectoryOnSDCard();
} else {
// 用户拒绝授权访问SD卡,可以显示一个提示或关闭应用
}
}
}
private void createDirectoryOnSDCard() {
String directoryName = "MyDirectory";
String directoryPath = Environment.getExternalStorageDirectory() + "/" + directoryName;
File directory = new File(directoryPath);
if (!directory.exists()) {
if (directory.mkdirs()) {
// 目录创建成功
} else {
// 目录创建失败
}
} else {
// 目录已存在
}
}
这样就可以使用SAF以编程方式在SD卡上创建目录了。请注意,SAF在Android 4.4及以上版本中可用。