問題:
在應用開發中遇到需要這樣的需求:在用戶下載我們的應用安裝之后刪除安裝包。
解決:
android會在每個外界操作APK的動作之后發出系統級別的廣播,過濾器名稱: android.intent.action.package_ADDED,
android.intent.action.PACKAGE_REMOVED,
需要注意點的是在涉及到存儲卡狀態改變的時候必須添加
<data android:scheme="package" >
我們要做的就是在應用AndroidManifest中注冊靜態廣播,並在自定義的廣播里處理相應的邏輯:
<receiver android:name="com.example.testdeleteapk.receiver.InitApkBroadCastReceiver" android:enabled="true" > <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver>
這樣,在應用安裝成功后就會接受到相應的廣播。廣播定義如下:
package com.example.testdeleteapk.receiver; import Java.io.File; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Environment; public class InitApkBroadCastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) { system.out.println("監聽到系統廣播添加"); } if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) { System.out.println("監聽到系統廣播移除"); } if (Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())) { System.out.println("監聽到系統廣播替換"); } } }