我參考了this信息。應用程序卸載時無法獲取接收器
我編寫了相同的程序,但是當我點擊卸載按鈕時,我無法獲得任何日誌信息。
我附上我的代碼如下。有沒有人知道這段代碼有什麼問題?
我想在使用點擊卸載按鈕時做點什麼。也許喜歡打開瀏覽器等。
有沒有人可以幫我一把嗎?
這個問題困擾了我很長一段時間。
我AndroidManifest:
...
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".UninstallIntentReceiver" >
<intent-filter>
<action android:name="android.intent.action.QUERY_PACKAGE_RESTART" />
<action android:name = "android.intent.action.PACKAGE_REMOVED" />
<action android:name = "android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package"></data>
</intent-filter>
</receiver>
</application>
...
我的廣播接收器下面的代碼:
public class UninstallIntentReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String [] packageNames = intent.getStringArrayExtra("android.intent.extra.PACKAGES");
if(packageNames!=null){
for(String packageName: packageNames){
if(packageName!=null && packageName.equals("yu.idv.uninstalldetected")){
Log.i("info", "00000000");
new ListenActivities(context).start();
Log.i("info", "11111111");
}
}
}
}
}
class ListenActivities extends Thread{
boolean exit = false;
ActivityManager am = null;
Context context = null;
public ListenActivities(Context con){
context = con;
am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
}
public void run(){
Looper.prepare();
while(!exit){
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(MAX_PRIORITY);
String activityName = taskInfo.get(0).topActivity.getClassName();
Log.i("info", "======CURRENT Activity =======::"
+ activityName);
if (activityName.equals("com.android.packageinstaller.UninstallerActivity")) {
exit = true;
Log.i("info", "2222222222");
Toast.makeText(context, "Done with preuninstallation tasks... Exiting Now", Toast.LENGTH_SHORT).show();
} else if(activityName.equals("com.android.settings.ManageApplications")) {
exit=true;
Log.i("info", "33333333333");
}
}
Looper.loop();
}
挑戰你知道,如果你的'BroadcastReceiver'被稱爲呢?添加一些日誌記錄來查看它是否被調用。 –
我在onReceive中添加了日誌。但是當我點擊卸載按鈕時,我沒有得到任何日誌。 :( – dickfala
如何在沒有任何啓動程序的情況下運行你的應用程序? –