还是在batterservice接收广播进行处理,
完整如下:
frameworks/ base/services/core/java/com/android/server/BatteryService.java
importandroid.content.IntentFilter;
importandroid.content.BroadcastReceiver;
importandroid.provider.MediaStore;
importandroid.content.ComponentName;
构造函数public BatteryService(Context context) {
加入
IntentFilte filter = new IntentFilter();
filter.addAction("com.intent.entering.camera");
mContext.registerReceiver(mReceiver,filter);
在复写的@Override
public void onStart() {
之前加入
BroadcastReceiver mReceiver = newBroadcastReceiver() {
@Override
public void onReceive(Context context,Intent intent) {
String action = intent.getAction();
if (action.equals("com.intent.entering.camera")){
android.util.Log.i("yantao","com.intent.entering.camera");
Boolean cameraState =intent.getBooleanExtra("open", false);
if (cameraState) {
Intent goCamera = newIntent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
mContext.startActivityAsUser(goCamera, UserHandle.CURRENT_OR_SELF);
} else {
//这里就是遍历所有进程,得到要杀掉的进程id,杀掉
ActivityManager activityManager= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> mRunningProcess =activityManager.getRunningAppProcesses();
int i = 1;
for (ActivityManager.RunningAppProcessInfoamProcess : mRunningProcess) {
android.util.Log.i("yantao", (i++) + "PID: " +amProcess.pid + "(processName=" + amProcess.processName +"UID=" + amProcess.uid + ")");
if(amProcess.processName.equals("com.mediatek.camera")){
android.os.Process.killProcess(amProcess.pid);
}
}
}
}
}
};