如何通过编程方式访问android根目录(/system/app)?
我在资产文件夹中有一个apk文件。如何通过编程方式访问android根目录(/system/app)?,android,android-assets,android-install-apk,Android,Android Assets,Android Install Apk,我在资产文件夹中有一个apk文件。 现在我需要创建一个程序,将该apk文件作为系统应用程序安装。 通过以下步骤手动将apk文件复制到SD卡中 $ adb push MyApk.apk /sdcard/ $ adb shell $ su $ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system $ cat /sdcard/MyApk.apk > /system/app/MyApk.apk $ pm install /syste
现在我需要创建一个程序,将该apk文件作为系统应用程序安装。
通过以下步骤手动将apk文件复制到SD卡中
$ adb push MyApk.apk /sdcard/
$ adb shell
$ su
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
$ cat /sdcard/MyApk.apk > /system/app/MyApk.apk
$ pm install /system/app/MyApk.apk
但是可以通过代码执行吗?参考下面的代码,在方法的帮助下将用户app apk移动到根设备中的系统app apk中
在应用程序中使用上述代码时,需要使用Busybox和superuser应用程序。您是否要使用根目录System@ArunCThomas是的,它的根设备然后通过supersu应用程序发出您正在执行的命令?为什么要在用户不执行的情况下安装apk?听起来有点可疑?@Pihhan市场上有很多应用程序可以通过读写权限直接或间接访问根目录。那为什么我们不能。。?e、 g:。
PackageInfo paramPackageInfo = null;
try {
paramPackageInfo = this.getPackageManager().getPackageInfo(
this.getPackageName(), 0);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
ApplicationInfo localApplicationInfo = paramPackageInfo.applicationInfo;
String str1 = "/system/app/" + localApplicationInfo.packageName
+ ".apk";
String str2 = "busybox mv " + localApplicationInfo.sourceDir + " "
+ str1;
RootTools.remount("/system", "rw");
RootTools.remount("/mnt", "rw");
CommandCapture command = new CommandCapture(0, str2,
"busybox chmod 644 " + str1);
try {
RootTools.getShell(true).add(command).waitForFinish();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (RootDeniedException e) {
e.printStackTrace();
}
RootTools.remount("/system", "ro");
RootTools.remount("/mnt", "ro");