標籤:
目前市面上很多工具有屏蔽其他app開機啟動的功能,比如獵豹清理大師和360安全衛士。本文講解如何避免被獵豹清理大師關閉收不到開機廣播的情況,360安全衛士的屏蔽模式還沒搞清楚,有大牛明白的話請賜教。
獵豹屏蔽的原理是通過改變第三方app接收開機廣播reciver的狀態來達到效果。解決辦法就是在關機廣播裡面把自己改為可用。
具體代碼如下:
接收開機廣播android.intent.action.BOOT_COMPLETED的組建命名為com.android.test.CompletedReciver.java
接收關機廣播android.intent.action.ACTION_SHUTDOWN的組建命名為com.android.test.ShutDownReciver.java
package com.android.test;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.text.TextUtils;
public class ShutDownReceiverextends BroadcastReceiver {
private static void setComponentEnableSetting(Context context, String className) {
PackageManager pm = context.getPackageManager();
ComponentName componentName = new ComponentName(context, className);
pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
private static int getComponentEnableSetting(Context context, String className) {
PackageManager pm = context.getPackageManager();
ComponentName componentName = new ComponentName(context, className);
return pm.getComponentEnabledSetting(componentName);
}
@Override
public void onReceive(final Context context, Intent intent) {
String action = intent.getAction();
if (TextUtils.isEmpty(action)) {
return;
}
if (Intent.ACTION_SHUTDOWN.equals(action)) {
String ComponentName = "com.android.test.CompletedReciver";
if (PackageManager.COMPONENT_ENABLED_STATE_DISABLED == getComponentEnableSetting(context.getApplicationContext(), ComponentName)) {
setComponentEnableSetting(context.getApplicationContext(), ComponentName);
}
}
}
}
關於360安全衛士和MIUI系統內建資訊安全中心的實現方式還沒搞明白。
解決被手機管理工具禁止開機啟動的方法