android程序的安装与卸载

本文介绍如何在Android中通过自定义BroadcastReceiver监听应用的安装与卸载事件。通过注册ACTION_PACKAGE_ADDED和ACTION_PACKAGE_REMOVED广播,可以实现在应用安装或卸载时触发特定操作,如记录日志或更新应用列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android

android在安装应用程序与卸载应用程序时都会发送广播,安装应用程序成功时会发送android.intent.action.PACKAGE_ADDED广播,可以通过intent.getDataString()获取安装应用的包名。当卸载应用程序成功时,系统会发送android.intent.action.PACKAGE_REMOVED广播,同样可以通过intetn.getDataString()获取应用的包名。


所以需要自定义一个BroadcastReceiver来对系统广播进行监听与处理。

1、自定义广播
自定义AppChangeTestReceiver继承自BroadcastReceiver,实现其onReceive()方式,具体代码如下。

public class AppChangTestReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    final String action = intent.getAction();

    if(Intent.ACTION_PACKAGE_ADDED.equals(action)) {
        Log.i("AAA",">>>>>>>>>>>>>>>>>>>package added");

    } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
        Log.i("AAA",">>>>>>>>>>>>>>>>>>>package removed");
    }
    }
}

2、注册监听
1)XML方式:在AndroidManifest.xml的配置文件Application节点下,注册自定义的AppChangeTestReceiver,其生命周期默认是整个应用的生命周期

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".HomeActivity"
        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=".receiver.AppChangTestReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_ADDED"/>
            <action android:name="android.intent.action.PACKAGE_REMOVED"/>
            <data android:scheme="package"/>
        </intent-filter>
    </receiver>
</application>
</manifest> 

2)代码中动态注册:一般在Activity的onStart()方法中进行注册,在onStop或者在onDestroy方法中进行注销,其生命周期是Activity的生命周期。

   @Override
protected void onStart() {
    super.onStart();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
    intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    intentFilter.addDataScheme("package");
    registerReceiver(mReceiver, intentFilter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(mReceiver);
}

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if(Intent.ACTION_PACKAGE_ADDED.equals(action)) {
            Log.i("AAA","####################-------package added");

        } else if(Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
            Log.i("AAA","###################----------package removed");
        }


    }
};

转载于:https://www.cnblogs.com/rookier/p/4877071.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值