美文网首页
Packet安装,卸载广播与卸载检测操作代码

Packet安装,卸载广播与卸载检测操作代码

作者: 清明捉鬼 | 来源:发表于2018-10-15 14:57 被阅读8次
安装,卸载广播
  • 类:PackageInstallReceiver
package com.biabia.club.testuninstalllistener.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;

public class PackageInstallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //接收安装广播
        if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
            String packageName = intent.getData().getSchemeSpecificPart();
        }
        //接收卸载广播
        if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
            String packageName = intent.getData().getSchemeSpecificPart();
            boolean isReplace = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
        }
        //接收升级更新广播
        if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
            String packageName = intent.getData().getSchemeSpecificPart();
        }
    }
    public void register(Context context) {
        context.registerReceiver(this, getIntentFilter());
    }

    public void unregister(Context context) {
        context.unregisterReceiver(this);
    }
    public IntentFilter getIntentFilter() {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
        intentFilter.addDataScheme("package");
        return intentFilter;
    }
}
  • PackageUtils 中卸载与检测操作
public class PackageUtils {
    private static PackageUtils instance;

    public static PackageUtils getInstance(){
        if(instance==null){
            instance=new PackageUtils();
        }
        return instance;
    }
    /**
     * 卸载指定包名的应用
     * @param packageName
     */
    public boolean uninstall(String packageName, Context context) {
        Context appContext = context.getApplicationContext();
        boolean b = checkApp(packageName,context);
        if (b) {
            Uri packageURI = Uri.parse("package:".concat(packageName));
            Intent intent = new Intent(Intent.ACTION_DELETE);
            intent.setData(packageURI);
            appContext.startActivity(intent);
            return true;
        }
        return false;
    }

    /**
     * 判断该包名的应用是否安装
     * @param packageName
     * @return
     */
    private boolean checkApp(String packageName, Context context) {
        if (packageName == null || "".equals(packageName)) {
            return false;
        }
        try {
            context.getPackageManager()
                    .getApplicationInfo(packageName, PackageManager.MATCH_UNINSTALLED_PACKAGES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            Log.i(TAG, "Test:" + e.toString());
        }
        return false;
    }
}

相关文章

  • Packet安装,卸载广播与卸载检测操作代码

    安装,卸载广播 类:PackageInstallReceiver PackageUtils 中卸载与检测操作

  • HomeBrew 卸载和安装

    以下代码均是在终端操作 卸载 卸载之后可以通过下面代码检查是否卸载 安装 安装的中间会让输入一次密码,输入即可 以...

  • 监听应用状态

    监听应用安装,升级,卸载的广播

  • Android监控其他应用安装及卸载

    每个应用在安装、更新、卸载的时候,系统都会发送广播,由此,我们可监控应用的安装、更新及卸载。 首先,定义广播 接着...

  • Linux下安装Nginx

    一.简介 二.安装 1.彻底卸载nginx 在安装之前检测是否已经安装,如已经安装卸载:https://www.j...

  • webpack的安装与卸载

    一、全局安装与卸载(不推荐) 1.全局安装 2.打印版本 3.全局卸载 二、本地安装与卸载(推荐) 1.本地安装 ...

  • 01-rmp命令和包管理

    1. 操作 - 安装: - 升级: - 卸载: - 不卸载依赖 说明:-i ,安装-v,详细信息-h,显示进度-U...

  • SQL mySQL

    操作化境为ubuntu mysql 基础操作 安装安装完全卸载卸载出现问题解决 打开并登录、修改密码 查看数据库 ...

  • CentOS 7中jdk的卸载与安装

    CentOS 7中jdk的卸载与安装 1.查询电脑上是否安装jdk 查询结果 2.卸载 3.验证是否卸载 4.安装...

  • 1 Mac下MySQL安装卸载与配置

    1 Mac下MySQL安装卸载与配置 1 MySQL的安装、启动及卸载 1.1 MySQL的安装 安装brew: ...

网友评论

      本文标题:Packet安装,卸载广播与卸载检测操作代码

      本文链接:https://www.haomeiwen.com/subject/bbufzftx.html