1、确认安装包是否存在,并可读写
2、隐示启动:action和data的schema来控制d出安装工具类APP,然后点击安装...
3、升级完:BootReceiver 监听到Intent.ACTION_PACKAGE_REPLACED,然后自启动裤局没
静默安装apk接口,无需开放root,也无需system权限。
1.静默卸载实现:
/**
* 静默卸载app
*
* @param context
* @param packageName app的包名
* @throws IOException
* @throws InterruptedException
*/
public static void uninstallApp(Context context, String packageName) throws IOException, InterruptedException {
List<PackageInfo>packageInfos = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES)
for (PackageInfo packageInfo1 : packageInfos) {
樱渣 if (packageName.equals(packageInfo1.packageName)) {
String suPath = "/system/xbin/su"
File file = new File(suPath)
if (!file.exists()) {
suPath = "/system/bin/su"
}
Process process = Runtime.getRuntime().exec(suPath)
String cmd = "pm uninstall " + packageName + "\n" + "exit\n"
process.getOutputStream().write(cmd.getBytes())
process.waitFor()
break
}
}
}
2.静默安装实现:
/**
* 静默安装app
*
* @param filePath
* @throws IOException
* @throws InterruptedException
*/
public static void installApp(String filePath) throws IOException, InterruptedException {
String suPath = "/system/xbin/su"
File file = new File(suPath)
if (!file.exists()) {
suPath = "/system/bin/su"
}
Process process = Runtime.getRuntime().exec(suPath)
String cmd = "pm install -r " + filePath + "\n" + "exit\n"
process.getOutputStream().write(cmd.getBytes())
process.waitFor()
}
/**
* 重启系统隐悔
*
* @return
*/
public static boolean reboot() {
try {
String suPath = "/system/xbin/su"
File file = new File(suPath)
if (!file.exists()) {
suPath = "/system/bin/su"
}
脊携悄 Process process = Runtime.getRuntime().exec(suPath)
String cmd = "reboot\nexit\n"
process.getOutputStream().write(cmd.getBytes())
return true
} catch (IOException error) {
return false
}
}
注意卸载和安装需要在子线程中执行;如果单纯关机则用“reboot -p”命令。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)