android 非系统apk 文件读写权限问题

转载 https://blog.csdn.net/u011386173/article/details/88827783

Android9  用AS写了个demoapk,想要创建文件test.pcm,code如下:

File file = new File("/sdcard","test.pcm");
        
if (!file.exists()) {
	boolean created = false;
	try {
		created = file.createNewFile();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

但是却抛出了异常:System.err: java.io.IOException: Permission denied.

看到Permission denied,即使在manifest中添加对应的写权限?

在activity启动时候添加了动态权限申请,仍然会报上面的错

Environment.getDataDirectory()
你想在/data文件夹下一级目录进行操作是不被允许的。

能操作文件夹只有两个地方:
1.sdcard
2./data/<package_name>/files/

详见api doc:
docs/guide/topics/data/data-storage.html#filesExternal

android提供了8个分区公开权限,可以读写,更多和storage相关的可查阅API Docs:docs/guide/topics/data/data-storage.html#filesExternal

google官方提供了一个创建文件的说明:https://developer.android.com/guide/topics/providers/document-provider#create

另外,对于给外置存储设备写入数据,似乎要系统级应用才有权限,AS编译出来的应用或者第三方应用是没有权限的,该结论没有亲测过....对于应用程序不能访问外置存储设备,是因为google为了强化Android系统对应用程序的访问控制,增强应用程序之间的隔离效果,确保每个应用程序之间的独立运作,建立类似于沙盒(sandbox)的隔离效果,从而阻止恶意应用程序对系统或其他应用程序的攻击。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值