第一篇博客:将用户程序转为系统程序

第一篇博客:将用户程序转为系统程序

时光飞逝,大三因为喜欢玩手机软件开始接触安卓,到现在即将毕业,自己也在试用期中,觉得是时候慢慢把学到的,用到的东西记录下来,也方便以后项目需要用到进行查找,第一篇来讲讲本地应用转为系统应用(前提是得Root,搞机的无视此提醒)。

转成系统应用原理是使用Java的Runtime.getRuntime().exec(“linux指令”)实现转换,首先将/system/目录挂载为可读写,然后获取本地应用的安装路径,设置安装路径为/system/app/xx.apk,执行cat将本地应用文件写到系统应用文件夹,然后修改xx.apk的权限即可。

```
// 执行root指令的方法
public static boolean RootCommand(String command) {

        Process process = null;
        DataOutputStream os = null;

        try {

            process = Runtime.getRuntime().exec("su");
            os = new DataOutputStream(process.getOutputStream());
            os.writeBytes(command + "\n");
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();

        } catch (Exception e) {
            Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());
            return false;

        } finally {

            try {
                if (os != null) {
                    os.close();
                }
                process.destroy();
            } catch (Exception e) {
            }
        }

        Log.d("*** DEBUG ***", "Root SUC ");
        return true;

    }

try {
        // 获取应用安装的路径 
        String sourceDir = context.getPackageManager()                          .getPackageInfo(context.getPackageName(), 0).applicationInfo.sourceDir;
        // 安装目标路径
        String sourceTarget = "/system/app/" + Constant.APP_NAME+ ".apk";
        // 挂载系统应用文件夹可读写,写入
        String apkRoot = "mount -o remount,rw /system" + "\n"+ "cat " + sourceDir + " > " + sourceTarget;
        // 执行指令
        RootCmd.RootCommand(apkRoot);
        // 修改权限
        String apkRoot1 = "chmod 644 " + sourceTarget;
        // 执行指令
        RootCmd.RootCommand(apkRoot1);
        // 转换后先验证是否转换成功,成功则弹出提示窗
        File file = new File(sourceTarget);
        if (file.exists()) {
            RootCmd.showRebootDialog(context);
        } else {
            ToastUtil.toast(context, "未转换成功,是否没有ROOT或授权该应用");
        }
        } catch (Exception e) {
            e.printStackTrace();
    }

在弄毕设的时候做的是程序锁,为防止卸载做了这个功能,在网上找了很多例子都是写到/system/app/文件夹后app是错误的,这个是自己调试修改代码修改成功的,在原生系统,MIUI,FIUI,IUNI系统均可以转成系统应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值