安卓BroadcastReceiver Kill 掉第三方app服务
来源:互联网 发布:网络交友有利有弊 英语 编辑:程序博客网 时间:2024/05/18 03:52
安卓BroadcastReceiver Kill 掉第三方app服务
我用的是vivo y13l 的手机,不知道怎么了,我的应用商店和游戏中心总是偷偷的开启我的数据连接,虽然我的流量每个月都用不完,但是对于用宜搜看小说的我实在不能忍受,用过宜搜的人都知道在有网络连接的时候会弹出广告,每次我把流量关了,结果不到3秒钟就会自动开启了.找了很久的原因才发现是因为应用商店和游戏中心的服务总是自动启动.哪怕在设立里面kill掉也会几秒钟后开启.每次看小说的时候就会调整为飞行模式,特别的不方便..(之前我的手机都不会自动开启数据连接,用了一年半的样子就这样了,各种方法都试了,手机直接双清都没有用.)今天闲着没事,干脆写一个app来监听服务,只要那两个服务开启就kill掉.
- 写一个广播来获取当前的移动网络状态是否开启.wifi我就没有管了
- 再写一个服务来发送广播
- Activity绑定服务,这样的话在我使用那两个app的时候可以关闭监听
MyReceiver广播
先写一个类来继承BroadcastReceiver,我是在设置里面找到了应用商店的包名,所以这里就只写了应用商店的服务.例如:
package com.chen.mob;import android.app.ActivityManager;import android.app.ActivityManager.RunningServiceInfo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.widget.Toast;public classMyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "发现应用商店自启动,正在kill中", Toast.LENGTH_SHORT).show(); ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE);// 获取连接管理器 NetworkInfo mobNetInfo = connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);// 获取移动数据连接 ActivityManager manager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE);// 获取当前开启的服务 if (mobNetInfo.isConnected()) {// 判断是否连接 for (RunningServiceInfo service : manager .getRunningServices(Integer.MAX_VALUE)) {// 遍历 //System.err.println(service.service.getClassName());//输出服务名称 if("com.bbk.appstore.download.OpenDownloadService" .equals(service.service.getClassName().toString())) {// 判断是否是应用商店的 manager.killBackgroundProcesses("com.bbk.appstore");// kill掉服务 Toast.makeText(context, "已kill掉应用商店,请手动关闭数据连接", Toast.LENGTH_SHORT).show(); } } } }}
MyService服务
然后写一个类来继承Service,例如:
package com.chen.mob;import android.annotation.SuppressLint;import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.os.Message;public classMyService extends Service { private static boolean falg = true;//是否开启监听的标志 private Handler handler; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onDestroy() { super.onDestroy(); falg = false;//关闭为false } @SuppressLint("HandlerLeak") @Override public int onStartCommand(Intent intent, int flags, int startId) { falg = true;//开启为true new Thread(new Runnable() {//另外开一个线程 @Override public void run() { while (falg) { try { Thread.sleep(5000);//休眠5秒 handler.sendEmptyMessage(0x101); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (falg) {//如果关闭中断循环 break; } } } }); handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0x101) { sendReceiver();//发送广播 } } }; return START_STICKY; } private void sendReceiver() { Intent in = new Intent(); in.setAction("edu.jju.broadcastreceiver"); sendBroadcast(in);// 发送普通广播 }}
Kill
最后写一个activity,例如:
package com.chen.mob;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.Toast;import android.widget.ToggleButton;public classKill extends Activity { private ToggleButton mTogBtn;//开启关闭设置 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTogBtn = (ToggleButton) findViewById(R.id.mTogBtn);//找ID mTogBtn.setOnCheckedChangeListener(new OnCheckedChangeListener() {//开启关闭监听 @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { startService(new Intent(Kill.this, MyService.class));//开启绑定服务 } else { stopService(new Intent(Kill.this, MyService.class));//关闭解除绑定 Toast.makeText(Kill.this, "应用商店kill已关闭", Toast.LENGTH_SHORT).show(); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }}
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f7f8f4" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/x40" android:layout_marginTop="@dimen/x10" android:background="#fff" android:orientation="horizontal" > <Button android:layout_width="wrap_content" android:layout_height="@dimen/x40" android:layout_weight="1" android:background="#fff" android:gravity="center_vertical" android:paddingLeft="@dimen/x8" android:text="@string/yy" /> <ToggleButton android:id="@+id/mTogBtn" android:layout_width="wrap_content" android:layout_height="@dimen/x40" android:layout_gravity="center_horizontal" android:background="@android:color/transparent" android:button="@drawable/toggle_btn" android:checked="true" android:gravity="center_vertical" android:text="" android:textOff="" android:textOn="" /> </LinearLayout></LinearLayout>
还有权限设置
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
然后我把它安装在手机上面,启动监听,ok了,应用商店的服务被关闭了.我就可以安心的看小说了.妈妈再也不用担心我关机了
ps:不知道为什么我贴的代码会格式不对,我把public class 类名中间的空格删除就对了.希望能有大神告诉我是为什么哈.
0 0
- 安卓BroadcastReceiver Kill 掉第三方app服务
- Android4.4 灭屏kill第三方app
- Android4.4 灭屏kill第三方app
- 安卓第三方服务整理(更新中)
- 安卓随手笔记四:(判断第三方app是否安装并启动)
- 安卓发送邮件————(非启动第三方app)
- 安卓实战——第三方服务之Bmob后端云(一)集成工作。
- 国产安卓第三方OS介绍
- 安卓常用第三方工具
- 安卓、第三方分享功能代码;
- 安卓导入第三方源码库
- 安卓第三方分享和登录
- 安卓常用的第三方框架
- 安卓集成第三方支付宝
- 安卓常用第三方框架-Gson
- 安卓常用第三方框架-FastJson
- 安卓推荐第三方库
- 安卓第三方框架glide
- ShowSDK一键分享
- 自定义Dialog 去掉标题
- SPOJ LEONARDO Leonardo Notebook
- ArcGIS Server如何以缓存的方式发布地图
- 全面解析微信小程序
- 安卓BroadcastReceiver Kill 掉第三方app服务
- Linux终端监控工具dstat
- linux 搭建SVN服务器,为多个项目分别建立版本库并单独配置权限
- 一组select实现多组select功能
- 使用cordova的加强webview
- 停车场自动停车,取车创意
- java 方法参数过多解决方法
- http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2647.html
- LA 6026 Asteroid Rangers