代码是添加在 ActivityManagerService 的 dump 方法里面 ,
启动的这个服务是 系统的一个服务。
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) {
if(args.length>=1 && args[0].equals("startService01")){
Intent intent = new Intent();
intent.setClassName("com.android.phone","com.android.phone.TelephonyDebugService");
pw.println("Starting service: " + intent);
ComponentName cn = null;
try {
cn = startService(null, intent, intent.getType(),
false, "com.android.shell", null, 0);
} catch (TransactionTooLargeException e) {
e.printStackTrace();
pw.println("Error ");
return ;
}
if (cn == null) {
pw.println("Error: Not found; no service started.");
return ;
} else if (cn.getPackageName().equals("!")) {
pw.println("Error: Requires permission " + cn.getClassName());
return ;
} else if (cn.getPackageName().equals("!!")) {
pw.println("Error: " + cn.getClassName());
return ;
} else if (cn.getPackageName().equals("?")) {
pw.println("Error: " + cn.getClassName());
return ;
}
pw.println("service " + intent +" started");
return ;
}
执行命令
adb shell dumpsys activity startService01
来调用上述代码.