广播监听手机中应用程序是否安装并卸载
发布时间:2020-05-24 21:12:05 所属栏目:Java 来源:互联网
导读:广播监听手机中应用程序是否安装并卸载
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 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>
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
