android.permission.WRITE_EXTERNAL_STORAGE许可但访问被拒绝
问题描述:
以下代码输出为“Write granted”,但之后发生错误'/storage/emulated/0/Download/test.txt:open failed:EACCES(Permission denied)'android.permission.WRITE_EXTERNAL_STORAGE许可但访问被拒绝
怎么了?
@RunWith(AndroidJUnit4.class)
public class FileStorageTest {
private static final String TAG = FileStorageTest.class.getSimpleName();
@Test
public void test() throws Exception {
Context context = InstrumentationRegistry.getTargetContext();
if (context.checkSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "Write granted");
} else {
Log.e(TAG, "Write refused");
}
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"test.txt");
new FileOutputStream(file).close();
}
}
答
您还需要添加
READ_EXTERNAL_STORAGE
权限从设备读取数据。在
RunTime
也添加此权限。
if (context.checkSelfPermission("android.permission.READ_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "Read granted");
} else {
Log.e(TAG, "Read refused");
}
+0
再次感谢您! – RenaudBlue
答
尝试加入到这个清单文件:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
可能是你还需要使用'READ_EXTERNAL_STORAGE权限从device.' –
@TimCastelijns先生难道我们不需要定义无论是在'Runtime'权限读取的数据? –
@jaydroider你可以但文档说*如果一个应用程序请求清单中列出的危险许可,并且该应用程序已在同一权限组中具有另一个危险权限,则系统会立即授予权限,而不会与用户进行任何交互。 –