老施一直觉得。方案很重要,所以我就不给出具体的代码了。就给两个核心的代码。禁止自启程序代码和恢复自启程序方法。你也可以封装成一个方法,。
/** 关闭开机启动项管理 */
public void closeAutoStartApp(final String appPackageName) {
progressDialog = ProgressDialog.show(this, null, "正在禁止,请稍候……");
new Thread() {
public void run() {
Process process = null;
DataOutputStream os = null;
String command = "";
try {
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.flush();
command = "pm disable " + appPackageName + " \n";
os.writeBytes(command);
os.writeBytes("exit\n");
os.flush();
os.close();
process.waitFor();
process.destroy();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
handler.sendEmptyMessage(0);
}
}.start();
}
/** 恢复开机启动项管理 */
public void startAutoStartApp(final String appPackageName) {
progressDialog = ProgressDialog.show(this, null, "正在恢复,请稍候.....");
new Thread() {
public void run() {
Process process = null;
DataOutputStream os = null;
String command = "";
try {
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
command = "CLASSPATH=/system/framework/pm.jar \n";
os.writeBytes(command);
os.flush();
command = "pm enable " + appPackageName + " \n";
os.writeBytes(command);
os.writeBytes("exit\n");
os.flush();
os.close();
process.waitFor();
process.destroy();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
handler.sendEmptyMessage(0);
}
}.start();
}
在ListView代码调用的时候记得传的参数是包名+“/”+info.activityInfo.name 如不懂info.activityInfo.name的参数,请看第一篇文档。closeAutoStartApp(adapter.getItem(position).packageName
+ "/" + adapter.getItem(position).name);调用方式。 如果各位有兴趣的想知道我的具体实现方法,请Q我。注意:禁止掉自启动程序需要root权限。