gpt4 book ai didi

android - 如何让我的应用成为系统应用?

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:47 24 4
gpt4 key购买 nike

我想让我的应用程序以编程方式成为系统应用程序。我设法在我的手机上用 root 和 busybox 做到了。知道如何在没有 busybox 的情况下实现这一目标吗?

Runtime.getRuntime().exec(new String[] { "su", "-c", "mount -o rw,remount -t yaffs2 /system; " +
"cp `ls /data/app/xxx*` /system/app; " +
"rm /data/app/xxx*; " +
"mount -o ro,remount -t yaffs2 /system; " +
"reboot" });

除此之外,我还面临另一个问题。如果我从系统应用程序 > 用户应用程序切换回我的应用程序并重新启动。 Android 系统仍然将我的应用程序识别为系统应用程序,即使该应用程序已驻留在/data/app 中。

我使用下面的代码来检查我的应用程序是否是系统应用程序:

android.content.pm.ApplicationInfo.FLAG_SYSTEM

最佳答案

引用下面的代码,借助 RootTools 方法将用户应用程序 apk 移动到系统应用程序 apk 中。

    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 和 super 用户应用程序是必需的。

关于android - 如何让我的应用成为系统应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com