监听开机广播的替代解决方案

来源:互联网 发布:求数组最大值和最小值 编辑:程序博客网 时间:2024/05/01 12:54

2015年2月27日23:35,我的第一篇技术博客诞生了。

由于android到了4.0之后,在安全的方面有了很大的改善,其中监听开机广播就是一个很大的改善。在没有界面的情况下,设置任何权限都没有办法来捕获开机的广播。大哭就算应用有了activity界面,在没有启动过,也是没有办法来监控开机广播。敲打 还有其他各种卫士、手机管家软件的阻挠,想要捕获开机广播已经非常非常的困难了。


那么需要在app中自启动,只能找一些替代的方法了。我们可以监控其他的一些广播,例如:屏幕解锁广播、屏幕点亮广播等。。。

下面是监听屏幕解锁广播:

    <!-- 锁屏事件 -->      <receiver android:name=".broadcast.LockScreenReceiver">          <intent-filter>               <action android:name="android.intent.action.USER_PRESENT" />          </intent-filter>      </receiver>  

当我们在LockScreenReceiver这个广播监听类的onReceive的方法中启动你需要启动的Service。 前提是你要判断下Service是否已经启动过,如果启动过就不需要再启动,没有启动过则启动Service。这样做的好处是还可以防止Service被一些牛虻软件给傻掉。偷笑

判断Service是否启动如下:

  public static boolean isServiceRunning(Context mContext,String className) {           boolean isRunning = false;ActivityManager activityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);           List<ActivityManager.RunningServiceInfo> serviceList           = activityManager.getRunningServices(30);          if (!(serviceList.size()>0)) {               return false;           }           for (int i=0; i<serviceList.size(); i++) {               if (serviceList.get(i).service.getClassName().equals(className) == true) {                   isRunning = true;                   break;               }           }           return isRunning;       }




0 0
原创粉丝点击