android监听应用的安装

该代码实现了一个名为InstallReceiverManager的类,用于管理安装应用的BroadcastReceiver。当系统接收到ACTION_PACKAGE_ADDED或ACTION_PACKAGE_REPLACED意图时,会调用回调方法通知应用安装成功。

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

package Utils;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;

import java.util.Objects;

public class InstallReceiverManager {
    private static final String TAG = "InstallReceiverManager";

    private InstallReceiver mInstallReceiver;
    private InstallCallback mInstallCallback;
    private Context mContext;

    public InstallReceiverManager(Context context, InstallCallback installCallback) {
        mContext = context;
        mInstallCallback = installCallback;
    }

    public interface InstallCallback {
        void installSuccessCallback(String packageName);
    }

    private class InstallReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Log.d(TAG, "Receive Intent.action=" + action);

            //Intent.ACTION_PACKAGE_NEEDS_VERIFICATION
            if ( // Intent.ACTION_PACKAGE_ADDED.equals(action) ||
                    Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
                String packageName =
                        Objects.requireNonNull(intent.getData()).getSchemeSpecificPart();
                mInstallCallback.installSuccessCallback(packageName);
            }
        }
    }

    public void registerInstallReceiver() {
        // 注册安装应用广播接收器
        if (mInstallReceiver == null) {
            mInstallReceiver = new InstallReceiver();
        }
        IntentFilter filterInstall = new IntentFilter();
        filterInstall.addAction(Intent.ACTION_PACKAGE_ADDED);
        filterInstall.addAction(Intent.ACTION_PACKAGE_REPLACED);
        filterInstall.addDataScheme("package");
        mContext.registerReceiver(mInstallReceiver, filterInstall);
        Log.d(TAG, "registerReceiver InstallReceiver success");
    }

    public void unregisterInstallReceiver() {
        // 注销广播接收器
        if (mInstallReceiver != null) {
            Log.d(TAG, "unregisterReceiver InstallReceiver");
            mContext.unregisterReceiver(mInstallReceiver);
            mInstallReceiver = null;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值