Android 監聽應用的安裝與卸載的 廣播
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.text.TextUtils;
import android.widget.Toast;import com.stone.mobilesafe.util.LogUtils; public class AppReceiver extends BroadcastReceiver { private final String TAG = this.getClass().getSimpleName(); @Override public void onReceive(Context context, Intent intent) { PackageManager pm = context.getPackageManager(); if (TextUtils.equals(intent.getAction(), Intent.ACTION_PACKAGE_ADDED)) { String packageName = intent.getData().getSchemeSpecificPart(); LogUtils.printInfo(TAG, "--------安裝成功" + packageName); Toast.makeText(context, "安裝成功" + packageName, Toast.LENGTH_LONG).show(); } else if (TextUtils.equals(intent.getAction(), Intent.ACTION_PACKAGE_REPLACED)) { String packageName = intent.getData().getSchemeSpecificPart(); LogUtils.printInfo(TAG, "--------替換成功" + packageName); Toast.makeText(context, "替換成功" + packageName, Toast.LENGTH_LONG).show(); } else if (TextUtils.equals(intent.getAction(), Intent.ACTION_PACKAGE_REMOVED)) { String packageName = intent.getData().getSchemeSpecificPart(); LogUtils.printInfo(TAG, "--------卸載成功" + packageName); Toast.makeText(context, "卸載成功" + packageName, Toast.LENGTH_LONG).show(); } } } </pre>
manifest.xml中的配置
<receiver android:name=".receiver.AppReceiver" > <intent-filter> <!-- 一個新應用包已經安裝在設備上,數據包括包名(監聽所在的app,新安裝時,不能接收到這個廣播) --> <action android:name="android.intent.action.PACKAGE_ADDED" /> <!-- 一個新版本的應用安裝到設備,替換之前已經存在的版本 替換時會先收到卸載的再收到替換的, 替換自身也能收到--> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <!-- 一個已存在的應用程序包已經從設備上移除,包括包名(卸載監聽所在的app,則無法接收到) --> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver>
本文由用戶 cp5m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!