android监听新安装应用

监听新安装应用,通过广播接受,并获取应用名,包名,

以下安装卸载应用相关的Broadcast Action,读者可自行按需求注册添加

ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程序不能接收到这个广播)
ACTION_PACKAGE_REMOVED 一个已存在的应用程序包已经从设备上移除,包括包名(正在被安装的包程序不能接收到这个播)
ACTION_PACKAGE_REPLACED 一个新版本的应用安装到设备,替换之前已经存在的版本
ACTION_PACKAGE_CHANGED 一个已存在的应用程序包已经改变,包括包名
ACTION_PACKAGE_RESTARTED 用户重新开始一个包,包的所有进程将被杀死,所有与其联系的运行时间状态应该被移除,包括包名(重新开始包程序不能接收到这个广播)
ACTION_PACKAGE_DATA_CLEARED 用户已经清楚一个包的数据,包括包名(清除包程序不能接收到这个广播)
AppInstallReciver广播类代码如下:

public class AppInstallReciver extends BroadcastReceiver {
    private Context mContext;
    PackageInfo packageInfo = null;
    @Override
    public void onReceive(Context context, Intent intent) {
        mContext = context;
        String action = intent.getAction();
        // 获取包名
        String packageName = intent.getData().getSchemeSpecificPart();
        try {
            //获取应用名
            packageInfo = mContext.getPackageManager().getPackageInfo(packageName, 0);
            String appName = packageInfo.applicationInfo.loadLabel(mContext.getPackageManager())
                    .toString();
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

AndroidMainfest中注册如下:

 <receiver android:name="com.example.test.AppInstallReciver">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED"/>
            intent-filter>
 receiver>

以上代码实现监听新安装应用,并获取包名,与应用名。卸载监听功能类似监听就可以了,

你可能感兴趣的:(android)