如何以编程方式访问android根目录(/system/app)? [英] how to get access of android root directory (/system/app) programatically?

查看:31
本文介绍了如何以编程方式访问android根目录(/system/app)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在资产文件夹中有一个 apk 文件.
现在我需要创建一个程序来将该 apk 文件安装为系统应用程序.
手动可以通过以下步骤将该 apk 文件复制到 sdcard 中,

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

但是可以通过代码实现吗?

But is it possible to do through code?

推荐答案

参考以下代码,在 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 和超级用户应用程序.

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

这篇关于如何以编程方式访问android根目录(/system/app)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆