2012-06-12 56 views
2

我添加了一個intent過濾器的活動來攔截我的應用程序的卸載,這樣我可以在用戶卸載我的應用程序時添加一些額外的處理/清理。我的活動被稱爲很好,但我似乎無法完成從設備中刪除軟件包。如何使用卸載活動完成我的android應用程序的實際卸載/刪除?

<activity 
     android:name=".Uninstall" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.DELETE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="package" /> 
     </intent-filter> 
    </activity> 

當我使用包管理器來嘗試完成卸載時,它只是彈出相同的選擇器對話框。

Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package", Uninstall.this.getPackageName(), null)); 
startActivity(intent); 

如果我爲我的應用程序提供替代卸載活動,我該如何從設備上完成APK的實際卸載?

謝謝。

+0

應用程序'NQ Mobile Security'在卸載時調用了一個'Activity'看看(http://imgur.com/Fos9N),(http://imgur.com/fizbK)和(http:// imgur.com/cG9Hr)和問題http://stackoverflow.com/questions/10219328/how-to-show-an-activity-before-my-app-is-uninstalled-android –

回答

2

你應該看看你的意圖的參考文檔。意圖ACTION_DELETE與刪除容器中的項目有關,而不是應用程序/軟件包的項目。處理該刪除應用程序/程序包的意圖是ACTION_PACKAGE_REMOVED但隨着文檔狀態:

現有應用程序包已經從所述設備移除。數據包含軟件包的名稱。正在(未)安裝的軟件包不會收到此Intent

所以你的問題的簡短答案是,它不能做到。如果按照本書玩,則不需要在卸載時執行其他任務。

+0

感謝您的回覆。我確實想玩這本書,但我也想處理卸載我的應用程序,這樣我就可以清理服務器上的數據,並停止主動發送推送通知。 –

+0

@Mark Nuetzmann:哦,那很好。然而,AFAIK沒有辦法做到這一點,因爲第二個應用程序正在監聽包被刪除。 –

+0

@ K-ballo應用程序'NQ Mobile Security'在卸載時調用一個活動,查看http://i.imgur.com/Fos9N.png,http://i.imgur.com/fIZbK.png,http ://i.imgur.com/cG9Hr.png和問題http://stackoverflow.com/questions/10219328/how-to-show-an-activity-before-my-app-is-uninstalled-android –