怎么在 /storage/emulated/0里获取权限写文件java.io.FileNotFoundException: /storage/emulated/0/MengYuanQing.txt (Permission denied)
时间: 2024-12-08 16:24:40 浏览: 23
在Android应用程序中,如果试图在`/storage/emulated/0`目录下写入文件而遇到`FileNotFoundException: Permission denied`,通常是因为你尚未获得相应的存储权限。在AndroidManifest.xml文件中,你需要添加对读写外部存储的权限:
```xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
然后,在运行时,你应该检查并请求权限,例如:
```java
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_EXTERNAL_STORAGE);
}
// 等待用户响应权限请求
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
if (requestCode == REQUEST_WRITE_EXTERNAL_STORAGE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 如果权限被授予,尝试写文件
try {
File file = new File("/storage/emulated/0/MengYuanQing.txt");
FileOutputStream fos = new FileOutputStream(file);
// 写入数据...
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
// 权限未授予,处理不允许的情况
Toast.makeText(this, "存储权限被拒绝", Toast.LENGTH_SHORT).show();
}
}
}
```
在这个例子中,`REQUEST_WRITE_EXTERNAL_STORAGE`是一个自定义请求码,用于跟踪用户的权限请求结果。
阅读全文