问题描述
- 求助:关于Android系统级别应用的静默安装、自动关机的问题,急求,谢谢
-
各位大神,本人目前开发车机,在开发自动关机、和apk静默安装的时候,遇到了前所未有的困难,请各位前辈指点江山,本人感激不尽,谢谢!!!后面再贴出相应代码。
解决方案
/**
* 关机的方法,需要手机有root权限
*/
private void shutdown() {
try {
Process process = Runtime.getRuntime().exec("su");
DataOutputStream out = new DataOutputStream(
process.getOutputStream());
out.writeBytes("reboot -pn");
out.writeBytes("exitn");
out.flush();
} catch (IOException e) {
e.printStackTrace();
AppLog.e(TAG+":shutdown()", e.toString());
}
}
这是关机的代码,获取root权限后,我的代码在手机上可以测试通过,但是烧进系统的时候,却无效,求大神指点,谢谢!
解决方案二:
/**
* 关机的方法,需要手机有root权限
*/
private void shutdown() {
try {
Process process = Runtime.getRuntime().exec("su");
DataOutputStream out = new DataOutputStream(
process.getOutputStream());
out.writeBytes("reboot -pn");
out.writeBytes("exitn");
out.flush();
} catch (IOException e) {
e.printStackTrace();
AppLog.e(TAG+":shutdown()", e.toString());
}
}
这是关机的代码,获取root权限后,我的代码在手机上可以测试通过,但是烧进系统的时候,却无效,求大神指点,谢谢!
解决方案三:
/**
* 静默安装
* @param file
* @return
*/
public boolean slientInstall(String path) {
boolean result = false;
Process process = null;
OutputStream out = null;
try {
process = Runtime.getRuntime().exec("su");
out = process.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(out);
dataOutputStream.writeBytes("chmod 777 " + path + "n");
dataOutputStream.writeBytes("LD_LIBRARY_PATH=/vendor/lib:/system/lib pm install -r " +
path);
// 提交命令
dataOutputStream.flush();
// 关闭流操作
dataOutputStream.close();
out.close();
int value = process.waitFor();
// 代表成功
if (value == 0) {
result = true;
} else if (value == 1) { // 失败
result = false;
} else { // 未知情况
result = false;
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
AppLog.i(TAG, "静默安装result:"+result+";filePath:"+path);
return result;
}
这是静默安装的代码。
权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INJECT_EVENTS" />
<uses-permission android:name="android.permission.SHUTDOWN" />
package="com.dss.launcher"
android:versionCode="1"
android:sharedUserId="android.uid.system"
android:versionName="1.3.3.2" >
解决方案四:
你烧进系统的时候,机器是否已经root,并且有给应用root权限吗?
解决方案五:
看不出来哪里有问题,你需要自己在机器上慢慢调试。
时间: 2024-11-03 11:40:28