監聽APK安裝廣播

在開發中,我們經常會需要監聽應用的安裝、卸載或替換,但是經常又會遺忘某些關鍵點。

1. 配置權限

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

2. 註冊廣播

private void initReceiver() {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        intentFilter.addDataScheme("package");
        registerReceiver(receiver, intentFilter);
    }

    private BroadcastReceiver receiver =  new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
                String packageName = intent.getData().getSchemeSpecificPart();
                Log.e("tag", packageName + "安裝成功");
                
            } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
                String packageName = intent.getData().getSchemeSpecificPart();
                Log.e("tag", packageName + "替換成功");
            } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
                String packageName = intent.getData().getSchemeSpecificPart();
                Log.e("tag", packageName + "卸載成功");
            }
        }
    };

此處的重點是;

intentFilter.addDataScheme("package");

經常容易被忘記!

3. 註銷

@Override
public void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章