我见过一个应用程序(我不是要宣传),它可以备份存储在根文件夹中的其他应用程序文件。我很好奇它是如何在没有 root的情况下工作的。
我尝试了几种方法,例如
File file = new File(PATH);
并使用 adb pull 和 push
p = Runtime.getRuntime().exec("adb pull PATH");
但他们并不成功。
问题:他们是如何完成应用程序的?是因为愤怒的小鸟提供了一些特殊的权限吗?
您可以run-as
在某些设备上使用特定包来执行命令。Google 已在 Jelly Bean 上修复了此问题,因此不再有效:
adb shell
run-as app.package.name \
cp /data/data/package.name/file.txt /sdcard/
exit
adb pull /sdcard/file.txt ~/
这是一篇很好的文章,解释了没有 root 权限的 Android 中的文件访问,包括上述脚本的单行。
它详细说明了如何使用新backup
命令:
backup -f ~/data.ab -noapk app.package.name
以及如何提取生成的 .ab 文件的内容:
dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -
您很可能需要android.permission.BACKUP
许可。
对于您的应用程序必须具有管理员权限,您必须绑定设备管理员
android:permission="android.permission.BIND_DEVICE_ADMIN"