由360手机卫士谈起——让你的service获取最高权限。
来源:互联网 发布:管家婆软件创业板 编辑:程序博客网 时间:2024/05/16 12:38
近日来,我在倒腾360手机卫士的时候,发现,你无论是把他数据清空,还是把它强行停止以后,甚至是把它卸载以后,它的service都没有被Android的系统干掉,依然是岿然不动了。我就感到了纳闷了,后来和群里的大牛讨论后,才知道360手机卫士真他妈的流氓,它是靠第三方的应用,360手机卫士将其开启。这就引出了,我们今天的话题,说一说service的重启方式,从而获取到最高的权限了。
1. 在service的OnDestroy中重新start service。
正规的stopservice的退出后,都会调用OnDestroy方法了,咦,我们何不在此方法后调用start service了,要想保证一个service被杀死后能够自己重新启动(重生),只需要在onDestroy函数中加上一些代码即可。以上面的例子来说明:
public void onDestroy(){ Log.i(TAG,"onDestroy"); ................. Intent localIntent = new Intent(); localIntent.setClass(this, MusicService.class); // 销毁时重新启动Service this.startService(localIntent); }
这种方法也不是很好了,当你把service伴随的主进程停掉以后,它依然会把service干掉。
2.在manifest清单文件中配置使其service不死。
我们从TRACE中可以验证,service执行了onCreate,onStart(没有看到onDestroy的TRACE,应该是执行了的)。如果想让服务不被杀死(也即无动作不改变),在XML的<application段后面加上 android:persistent="true"就行了。
这种方法也不是 万能的,有些手机他偏偏能够停掉该service。
3.利用第三方应用start service
这种方法可以说是万能的,但是要确保用户能够安装你依附第三方应用,而且是不折不扣的流氓行为。
4.通过Receiver起应用
注册BroadcastReceiver两种方式:方式一,静态的在AndroidManifest.xml中用<receiver>标签声明注册,并在标签内用<intent- filter>标签设置过滤器,如上的开机自启动方式。方式二,动态地在代码中先定义并设置好一个 IntentFilter对象,然后在需要注册的地方调 Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果用动态方式注册的BroadcastReceiver的Context对象被销毁时,BroadcastReceiver也就自动取消注册了。
一相应的实例如下:
import android.content.BroadcastReceiver; import android.content.IntentFilter; IntentFilter ScreenFilter = new IntentFilter(); ScreenFilter.addAction(Intent.ACTION_SCREEN_ON); registerReceiver(mScreenFilterReceiver, ScreenFilter); private BroadcastReceiver mScreenFilterReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { freshDetect(); //做要求的处理 } } };
这种方法重启service,也可以说是万无一失的。
以上就是重启service的四种方式,大家是否有收获,请给予反馈.
- 由360手机卫士谈起——让你的service获取最高权限。
- 获取手机最高权限代码
- ToolRoot——让你的APK获取ROOT权限
- 360手机卫士清理后台service的反制方案
- 360手机卫士的建议
- 手机卫士—骚扰拦截
- 让人抓狂的win7系统权限 由failed installing tomcat6 service 引发的烦恼
- 让人抓狂的win7系统权限 由failed installing tomcat6 service 引发的烦恼
- android项目——手机卫士_遇到的问题
- 获取linux最高权限
- 高仿360手机卫士——Android源码
- ANDROID——仿360手机卫士的旋转打分控件
- 360手机卫士:测试类的优化
- 由GOOGLE的操作系统谈起
- 手机卫士—检测SIM卡
- 手机卫士—远程锁屏
- 手机卫士08-获取手机联系人
- 获取Root权限,让你玩转安卓
- linux标准学习之-LSB(上)
- gstreamer how to use hardware decoder in playbin2
- 处理焦点项目2
- 制作CAB文件
- 探索 FileSystem API
- 由360手机卫士谈起——让你的service获取最高权限。
- 游戏抽奖活动中下限保底的简单实现
- BUPT OJ91 文件系统
- vim和系统剪贴板的交互
- 使用PostThreadMessage向工作线程发送消息
- LeetCode 144 — Binary Tree Preorder Traversal(C++ Java Python)
- Linux上安装memcached
- linux标准学习之-LSB(下)
- 用户态的信号量