如何让Android的根目录(/系统/应用程序)访问编程?根目录、应用程序、系统、Android

2023-09-06 02:58:23 作者:关于等待一个人的大全

我的资产文件夹中的APK文件。 现在,我需要建立一个程序,将安装apk文件作为系统中的应用。 手动有可能通过复制apk文件到SD卡具有以下步骤,

I have an apk file in asset folder. Now I need to create a program which will install that apk file as system application. Manually it is possible by copying that apk file into sdcard with following steps,

$ 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

但它是可以做到通过code?

But is it possible to do through code?

推荐答案

请参考下面的code键移动用户的应用程序的apk到系统的应用程序APK在生根装置具有的 RootTools 方法。

Refer the below code to move user app apk into system app apk in rooting device with the help of RootTools method .

     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");

必要Busybox的和超级用户的应用程序,同时使用上述code。在您的应用程序。

Necessary of Busybox and superuser app while use the above code in your application.