先是AndroidManifest里边写
<receiver android:name="com.qzb.receiver.ApplicationInstallUninstallReceiver" > <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> //下边这个一定要写,否则接受不到broadcast <data android:scheme="package" /> </intent-filter> </receiver>
然后是代码
public void onReceive(Context context, Intent intent) { // TODO 自动生成的方法存根 if ("android.intent.action.PACKAGE_REMOVED".equals(intent.getAction())) { // 判断是否是替代原软件 final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false); if (!replacing) {//安装新软件 final int uid = intent.getIntExtra(Intent.EXTRA_UID, -123); Toast.makeText(context, "uid is "+uid, Toast.LENGTH_LONG).show(); }else{//更新软件 final int uid = intent.getIntExtra(Intent.EXTRA_UID, -123); Toast.makeText(context, "true uid is "+uid, Toast.LENGTH_LONG).show(); } } else if ("android.intent.action.PACKAGE_ADDED".equals(intent.getAction())) { final int uid = intent.getIntExtra(Intent.EXTRA_UID, -123); Toast.makeText(context, "uid is "+uid, Toast.LENGTH_LONG).show(); } }
获得程序的名称:String packageName = intent.getDataString();
主意,更新,替换软件不会改变uid