Android(java)学习笔记120:BroadcastReceiver之 应用程序安装和卸载 的广播接收者

国内的主流网络公司(比如网易、腾讯、百度等等),他们往往采用数据挖掘技术获取用户使用信息,从而采用靶向营销。比如电脑上,我们浏览网页的时候,往往会发现网页上会出现我们之前经常浏览内容的商业广告,这就是因为网络运行商获取我们的cookie(储存在用户本地终端上的数据),获取我们浏览的内容信息,从而进行靶向营销。又比如手机端上,腾讯根据监听android手机用户大量下载米聊(小米开发类似微信),腾讯开始研发类似产品于是出现了微信,最后把米聊程序杀死了。

下面是关于应用程序的安装和卸载的案例:

1. 首先买一个收音机:重写一个PackageStatusReceiver 继承自BroadcastReceiver ,监听相应的广播,就会执行onReceive方法。

package com.itheima.appstatus;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class PackageStatusReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if("android.intent.action.PACKAGE_INSTALL".equals(action)){
            System.out.println("有包install了"+intent.getData());
        }else if("android.intent.action.PACKAGE_ADDED".equals(action)){
            System.out.println("有包add了"+intent.getData());
        }else if("android.intent.action.PACKAGE_REMOVED".equals(action)){
            System.out.println("有包卸载了"+intent.getData());
        }
    }

}

2. 装电池 和 调频道,配置AndroidManifest.xml: 因为应用程序的安装/卸载,不算用户的隐私,所以这里就没有权限添加;

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.itheima.appstatus"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.itheima.appstatus.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <receiver android:name="com.itheima.appstatus.PackageStatusReceiver">
            <intent-filter >
                <action android:name="android.intent.action.SCREEN_OFF"/>
                <action android:name="android.intent.action.PACKAGE_REMOVED"/>
                <data android:scheme="package"/>
            </intent-filter>
        </receiver>
        
    </application>

</manifest>

 

原文地址:https://www.cnblogs.com/hebao0514/p/4742290.html