val filePath = getString(R.string.file_path)
val file = File(filePath)
var lines: List<String?> = ArrayList()
if(!file.exists()) {
try {
if (Environment.getExternalStorageState()==Environment.MEDIA_MOUNTED) {
file.createNewFile()
}
} catch (e: IOException) {
AlertDialog.Builder(this)
.setTitle(getString(R.string.No_records_file))
.setMessage(getString(R.string.cant_create_file))
.setNeutralButton(
R.string.Exit
) { dialog, id -> finish() }.show()
}
}它可以在Android 8.0.0,9.0上运行。我不太确定安卓系统,但这个问题出现在Mi9T pro上
发布于 2020-03-22 14:36:23
使用Android Q,您不能再直接访问文件系统。请改用SAF (存储访问框架)。
发布于 2020-04-10 01:22:10
在Android API 29上,getExternalStorageDirectory已被弃用,您应该使用getExternalFilesDir。
发布于 2020-04-10 01:50:21
首先添加这个规则;
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />向activity请求权限;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//ASK HERE...
if (shouldAskPermissions()) {
askPermissions();
}
}-
//// ASK METHODS
protected boolean shouldAskPermissions() {
return (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1);
}
protected void askPermissions() {
String[] permissions = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE"
};
int requestCode = 200;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(permissions, requestCode);
}
}然后,对于创建文件,使用以下代码;
File directory = new File(Environment.getExternalStorageDirectory()+java.io.File.separator +"AppName");
try{
if(!directory.exists()) {
System.out.println("Directory created");
directory.mkdirs();
} else {
System.out.println("Directory is not created");
}
File f = new File(directory.getPath()+"/"+ "ENTER_FILE_NAME" + ".jpg");
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.close();
System.out.println("FILE PATH:" + f.getPath());
}catch(Exception e){
e.printStackTrace();
}https://stackoverflow.com/questions/60796342
复制相似问题