如何让自己的应用不能被kill掉?
我目前做的一个应用为了保护用户隐私,不允许在setting中将service停掉,也不允许通过第三方应用将应用kill掉,如果说service被停掉,或是应用被kill掉,则立即重启service,请问有什么方法或是思路实现么?
ps:如果在杀掉应用 或是停掉service的时候,能截获到这个操作么?
[解决办法]
你可以在frameworks\base\services\java\com\android\server\am\ActivityManagerService.java这个类的forceStopPackage中加一个条件
- Java code
public void forceStopPackage(final String packageName) { if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) != PackageManager.PERMISSION_GRANTED) { String msg = "Permission Denial: forceStopPackage() from pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid() + " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES; Slog.w(TAG, msg); throw new SecurityException(msg); } long callingId = Binder.clearCallingIdentity(); try { IPackageManager pm = ActivityThread.getPackageManager(); int pkgUid = -1; synchronized(this) { try { pkgUid = pm.getPackageUid(packageName); } catch (RemoteException e) { } if (pkgUid == -1) { Slog.w(TAG, "Invalid packageName: " + packageName); return; } //begin:加入一个判断条件 if (packageName.equals("你的进程名")) { return; } //end: 加入一个判断条件 forceStopPackageLocked(packageName, pkgUid); } } finally { Binder.restoreCallingIdentity(callingId); } }
[解决办法]
[解决办法]