广播监听手机中应用程序是否安装并卸载

public class PackageReceiver extends BroadcastReceiver {

private static final int PACKAGE_NAME_INDEX = 8;

@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
/**安装程序的ACTION为Intent.ACTION_PACKAGE_ADDED*/
if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
String data = intent.getDataString();
if (data == null || data.length() <= PACKAGE_NAME_INDEX) { return; }
String packageName = data.substring(PACKAGE_NAME_INDEX);
if (isAvilible(context, packageName)) {
/**说明安装了应用包*/
Uri uri = Uri.fromParts("package", packageName, null);
/**监听应用卸载的ACTION*/
intent = new Intent(Intent.ACTION_DELETE, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
else {
Toast.makeText(context, "手机并没有安装该应用!", Toast.LENGTH_SHORT).show();
}
}
}
}

/**检测是否安装了微信的客户端*/
public static boolean isAvilible(Context context, String packageName) {
/**包管理器PackageManager*/
final PackageManager packageManager = context.getPackageManager();
/**所有已安装程序的包信息*/
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
/**存储所有已安装程序的包名*/
List<String> pName = new ArrayList<String>();
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
pName.add(pn);
}
}
return pName.contains(packageName);
}

}

-----------AndroidManifest.xml中注册广播---------------------------

 <receiver android:name=".PackageReceiver">
           <intent-filter>
              <action android:name="android.intent.action.PACKAGE_ADDED" />
              <data android:scheme="package" />
              </intent-filter>
        </receiver>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值