java.io.FileNotFoundException:/cache/recovery/uncrypt_file:打开失败:EACCES(权限被拒绝)
java.io.FileNotFoundException: /cache/recovery/uncrypt_file: open failed: EACCES (Permission denied)
这个错误让我很困惑:
java.io.FileNotFoundException: /cache/recovery/uncrypt_file: open failed: EACCES (Permission denied)
我用这个方法的时候RecoverySystem.installPackage()
,ota路径在sdcard。我的android版本是6.0.1,源码的RecoverySystem.installPackage()
如下:
public static void installPackage(Context context, File packageFile)
throws IOException {
String filename = packageFile.getCanonicalPath();
FileWrite uncryptFile=new FileWriter(UNCRYPT_FILE);
try{
uncryptFile.write(filename+"\n");
}finally{
uncryptFile.close();
}
Log.w(TAG, "!!! REBOOTING TO INSTALL " + filename + " !!!");
if(filename.startWith("/data/")){
filename="@/cache/recovery/block.map";
}
final String filenameArg = "--update_package=" + filename;
final String localeArg = "--locale=" + Locale.getDefault().toString();
bootCommand(context, filenameArg, localeArg);
}
它不起作用,因为您的默认应用安装在 /system/app
文件夹中。你应该把它移到 /system/priv-app
.
当我将应用程序移动到文件夹 /system/priv-app 时,我也有同样的问题。
我正在编写的应用只是 activity 启动我的服务 /onCreate。我已经在 manifest.xml==>
android.permission.INTERNET"/ WRITE_EXTERNAL_STORAGE" /REBOOT/ACCESS_CACHE_FILESYSTEM/DELETE_CACHE_FILES.
W/System.err( 1744): java.io.FileNotFoundException: /cache/recovery/command: open failed: EACCES (Permission denie
W/System.err( 1744): at libcore.io.IoBridge.open(IoBridge.java:429)
W/System.err( 1744): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
W/System.err( 1744): at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
W/System.err( 1744): at java.io.FileWriter.<init>(FileWriter.java:42)
W/System.err( 1744): at android.os.RecoverySystem.bootCommand(RecoverySystem.java:408)
W/System.err( 1744): at android.os.RecoverySystem.installPackage(RecoverySystem.java:337)
W/System.err( 1744): at com.lcupdate.UsbUpdateService.rebootToInstall(UsbUpdateService.java:46)
W/System.err( 1744): at com.lcupdate.UsbUpdateService.checkZipExist(UsbUpdateService.java:58)
W/System.err( 1744): at com.lcupdate.UsbUpdateService.onCreate(UsbUpdateService.java:74)
W/System.err( 1744): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2578)
W/System.err( 1744): at android.app.ActivityThread.access00(ActivityThread.java:144)
W/System.err( 1744): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1288)
W/System.err( 1744): at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 1744): at android.os.Looper.loop(Looper.java:136)
W/System.err( 1744): at android.app.ActivityThread.main(ActivityThread.java:5120)
W/System.err( 1744): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1744): at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err( 1744): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
W/System.err( 1744): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
W/System.err( 1744): at dalvik.system.NativeStart.main(Native Method)
这个错误让我很困惑:
java.io.FileNotFoundException: /cache/recovery/uncrypt_file: open failed: EACCES (Permission denied)
我用这个方法的时候RecoverySystem.installPackage()
,ota路径在sdcard。我的android版本是6.0.1,源码的RecoverySystem.installPackage()
如下:
public static void installPackage(Context context, File packageFile)
throws IOException {
String filename = packageFile.getCanonicalPath();
FileWrite uncryptFile=new FileWriter(UNCRYPT_FILE);
try{
uncryptFile.write(filename+"\n");
}finally{
uncryptFile.close();
}
Log.w(TAG, "!!! REBOOTING TO INSTALL " + filename + " !!!");
if(filename.startWith("/data/")){
filename="@/cache/recovery/block.map";
}
final String filenameArg = "--update_package=" + filename;
final String localeArg = "--locale=" + Locale.getDefault().toString();
bootCommand(context, filenameArg, localeArg);
}
它不起作用,因为您的默认应用安装在 /system/app
文件夹中。你应该把它移到 /system/priv-app
.
当我将应用程序移动到文件夹 /system/priv-app 时,我也有同样的问题。 我正在编写的应用只是 activity 启动我的服务 /onCreate。我已经在 manifest.xml==> android.permission.INTERNET"/ WRITE_EXTERNAL_STORAGE" /REBOOT/ACCESS_CACHE_FILESYSTEM/DELETE_CACHE_FILES.
W/System.err( 1744): java.io.FileNotFoundException: /cache/recovery/command: open failed: EACCES (Permission denie
W/System.err( 1744): at libcore.io.IoBridge.open(IoBridge.java:429)
W/System.err( 1744): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
W/System.err( 1744): at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
W/System.err( 1744): at java.io.FileWriter.<init>(FileWriter.java:42)
W/System.err( 1744): at android.os.RecoverySystem.bootCommand(RecoverySystem.java:408)
W/System.err( 1744): at android.os.RecoverySystem.installPackage(RecoverySystem.java:337)
W/System.err( 1744): at com.lcupdate.UsbUpdateService.rebootToInstall(UsbUpdateService.java:46)
W/System.err( 1744): at com.lcupdate.UsbUpdateService.checkZipExist(UsbUpdateService.java:58)
W/System.err( 1744): at com.lcupdate.UsbUpdateService.onCreate(UsbUpdateService.java:74)
W/System.err( 1744): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2578)
W/System.err( 1744): at android.app.ActivityThread.access00(ActivityThread.java:144)
W/System.err( 1744): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1288)
W/System.err( 1744): at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 1744): at android.os.Looper.loop(Looper.java:136)
W/System.err( 1744): at android.app.ActivityThread.main(ActivityThread.java:5120)
W/System.err( 1744): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1744): at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err( 1744): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
W/System.err( 1744): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
W/System.err( 1744): at dalvik.system.NativeStart.main(Native Method)