相关疑难解决方法(0)

Android开发版RecoverySystem.installPackage()无法写入/ cache/recovery/command权限被拒绝

我被要求为基于Android的产品编写一个简单的小应用程序.该设备附带两个具有不同功能的Android系统映像.我正在编写的应用程序只是一个概念验证,当您单击按钮时,它使用恢复系统将其中一个图像替换为当前操作系统.

设备已植根,应用程序作为系统应用程序运行.

我用

RecoverySystem.installPackage(context, packageFile);
Run Code Online (Sandbox Code Playgroud)

(参见此处参考)用其中一个图像替换操作系统.这应该重新启动系统并初始化恢复系统以安装映像.

我遇到的问题是此调用失败,因为该RecoverySystem.installPackage方法似乎无法访问/ cache/recovery /命令文件.我想它试图为恢复系统编写一些命令,以便在重启时执行,但是失败了.以下是我得到的例外情况:

02-27 16:44:39.463: E/BroadSign Resolution Switcher(4439): java.io.FileNotFoundException: /cache/recovery/command: open failed: EACCES (Permission denied)
02-27 16:44:39.463: E/BroadSign Resolution Switcher(4439):  at libcore.io.IoBridge.open(IoBridge.java:416)
02-27 16:44:39.463: E/BroadSign Resolution Switcher(4439):  at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
02-27 16:44:39.463: E/BroadSign Resolution Switcher(4439):  at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
02-27 16:44:39.463: E/BroadSign Resolution Switcher(4439):  at java.io.FileWriter.<init>(FileWriter.java:42)
02-27 16:44:39.463: E/BroadSign Resolution Switcher(4439):  at android.os.RecoverySystem.bootCommand(RecoverySystem.java:381)
02-27 16:44:39.463: E/BroadSign Resolution Switcher(4439):  at android.os.RecoverySystem.installPackage(RecoverySystem.java:330)
Run Code Online (Sandbox Code Playgroud)

所以,我假设我没有访问此文件的适当权限.虽然这是我在清单中设置的权限:

<uses-permission android:name="android.permission.REBOOT" />
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
Run Code Online (Sandbox Code Playgroud)

我知道我需要REBOOT权限RecoverySystem.但是,我不知道其他两个是否相关.我甚至不知道是否需要一些其他权限来创建/写入/ …

android

12
推荐指数
1
解决办法
8469
查看次数

标签 统计

android ×1