【发布时间】:2013-07-09 09:17:18
【问题描述】:
我在将文件(.so 二进制文件)从资产目录复制到应用安装“/data/data/name.ofmy.app/lib”目录时遇到问题。
当我尝试时,我收到以下错误:
07-09 11:00:48.902:W/System.err(25122):java.io.FileNotFoundException:/data/data/name.ofmy.app/lib/libOlsrdPudWireFormat.so:打开失败:EACCES(权限拒绝)
当执行以下代码时会发生这种情况:
if ((so = new File(dir, fileName)).exists()) {
/*
* Check to see if this timestamp pre-dates the current package
*/
if ((pkg = new File(ctx.getPackageResourcePath())).exists()) {
if (pkg.lastModified() < so.lastModified()) {
Log.v(TAG, "extractFile: File up to date");
return;
}
}
Log.v(TAG, "extractFile: library present but out of date");
so.delete();
}
Log.v(TAG, "extractFile: copying library");
InputStream in = ctx.getAssets().open(name);
FileOutputStream out = new FileOutputStream(so);
当不存在具有该名称的文件时,它会在 InputStream in = ctx.getAssets().open(name); 处中断...
我一直在 StackOverflow 上阅读类似的问题,但不幸的是,这并没有帮助。大多数都在复制到 SD 卡,但我没有。
另外奇怪的是,我的资产中也提供了以前的目录(/bin 而不是 /lib),它确实被复制到同一个 /dat/data... 目录中而没有任何问题!
我尝试添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 权限无济于事。
我什至尝试在尝试复制任何内容之前添加Runtime.getRuntime().exec("su");,但也无济于事。
顺便说一句,这是一部植根手机!
我还仔细检查了该文件是否真的存在于资产中,并且确实存在!
【问题讨论】:
-
将此评论作为答案移动
标签: android