😄作者简介:小曾同学.com,一个致力于测试开发的博主⛽️,
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍
在本篇文章你将学到如何监听应用程序的安装与卸载
。
文章目录
- 背景
- 实战
- 第一步:`创建广播接收器`
- 第二步:`注册广播`
- 第三步:`注销广播`
背景
为什么要监听应用的安装与卸载:主要是收集信息
。
为什么要收集信息:对于一些大公司来说要做一个产品。首先要做一些战略性的参考,比如说什么产品比较好以及某个产品的预测未来,就会通过安装或者卸载在用户手机中广告监听。比如说腾讯通过在QQ应用上监听应用程序卸载与安装,当时小米有一款产品叫米聊,比较火爆,然后腾讯看这款产品这么好,能不能用到自己的产品上,然后微信就产生了。
实战
注意事项:
- 需要使用动态注册
- 新增应用监听:
"android.intent.action.PACKAGE_ADDED"
- 卸载监听:
"android.intent.action.PACKAGE_REMOVED"
- 通过调用
addDataScheme()
方法,并传递数据方案"package"
作为参数。这意味着您的IntentFilter
将只对"package"
数据方案的 Intent 感兴趣。通常,这用于声明您的广播接收器只对与应用程序安装和卸载相关的 Intent 感兴趣。
第一步:创建广播接收器
名为AppStateChangeReceiver
,继承BroadcastReceiver
,并重写onReceive()
,我们在onReceive()方法中只获取action并打印 log,具体逻辑如下。
public class AppStateChangeReceiver extends BroadcastReceiver {public static final String TAG = "AppStateChangeReceiver";@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action != null && action.equals(Intent.ACTION_PACKAGE_ADDED)) {// 应用已安装String packageName = intent.getData().getSchemeSpecificPart();Log.d(TAG,"新增了"+packageName);} else if (action != null && action.equals(Intent.ACTION_PACKAGE_REMOVED)) {// 应用已卸载String packageName = intent.getData().getSchemeSpecificPart();Log.d(TAG,"卸载了"+packageName);}}
}
第二步:注册广播
因为安装与卸载需要动态注册,所以我们在oncreate方法中注册,逻辑如下:
public class MainActivity extends AppCompatActivity {AppStateChangeReceiver appStateChangeReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("android.intent.action.PACKAGE_ADDED");intentFilter.addAction("android.intent.action.PACKAGE_REMOVED");intentFilter.addDataScheme("package");appStateChangeReceiver = new AppStateChangeReceiver();registerReceiver(appStateChangeReceiver,intentFilter);}}
在动态注册广播时,一定要记住步骤:
- 新建一个类继承BroadcastReceiver
- 实现onReceive方法
- 在代码中实例化新建类的广播类
- 在代码中实例化IntentFilter
- 调用IntentFilter对象的addAction方法设置频道
- 调用registerReceiver注册广播
- 通过sendBroadcast发送广播
- 通过unregisterReceiver
第三步:注销广播
protected void onDestroy() {super.onDestroy();unregisterReceiver(appStateChangeReceiver);}
测试结果如下:
当设备上新增或删除应用时,都会收到打印信息。