Android 監聽應用的安裝與卸載的 廣播

cp5m 9年前發布 | 917 次閱讀 Java

    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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!