我看过一个app(我不是故意做广告)可以备份存储在根文件夹中的其他应用程序文件。我很好奇它是如何工作的没有root 。
我尝试了几种方法,比如
File file = new File(PATH);
并使用adb pull and push
p = Runtime.getRuntime().exec("adb pull PATH");
但他们没有成功。
问题:他们是如何完成应用的?是因为angrybirds提供了一些特殊权限吗?
答案 0 :(得分:3)
您可以在某些设备上使用run-as
来执行特定包的命令。谷歌已经在Jelly Bean上修复了这个问题,因此它不再适用:
adb shell
run-as app.package.name \
cp /data/data/package.name/file.txt /sdcard/
exit
adb pull /sdcard/file.txt ~/
Here是一篇很好的文章,解释了没有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
权限。
答案 1 :(得分:0)
对于您的应用程序必须具有管理员权限,您必须绑定设备管理员
android:permission="android.permission.BIND_DEVICE_ADMIN"