廣播監聽手機中應用程序是否安裝并卸載
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></pre>