2013-09-23 85 views
3

編輯:管理解決它。創建一個新項目,清除應用程序數據,然後卸載它,重新安裝它,它神奇地工作。謝謝您的幫助。檢測應用安裝

我試圖檢測應用何時安裝,但我不太確定我要出錯的位置。我在這裏查了幾個問題,但我似乎無法弄清楚。我對android非常陌生,所以我可能錯過了一些明顯的東西。這是我所擁有的測試案例。

我將它安裝到了我的手機,並且過程和服務顯示爲在設置中運行。然後,我從Play商店下載應用程序,檢查logcat,並且應用程序中沒有任何內容。

任何幫助我去哪裏錯了?謝謝。

編輯:

用它打的多了一些之後,我有一些新的例子測試代碼。安裝新包時,onReceive方法不會觸發。然而,當我測試了一些東西的時候,我在BroadcastReceiver類中添加了一個構造函數,並且每次安裝包時構造函數都會觸發。所以,它似乎正在接受意圖,但onReceive內部的日誌似乎從未打印出來。有任何想法嗎?

public class InstallReceiver extends BroadcastReceiver { 

    public InstallReceiver() 
    { 
     //This log will display in the logcat 
     Log.d("InstallReceiver", "InstallReceiver constructor called."); 
    } 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     //This log never displays if the constructor is in or commented out 
     Log.d("InstallReceiver", "Install detected."); 
    } 

} 

<receiver android:name=".InstallReceiver"> 
      <intent-filter > 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="android.intent.action.PACKAGE_ADDED" /> 
      <action android:name="android.intent.action.PACKAGE_CHANGED" /> 
      <action android:name="android.intent.action.PACKAGE_INSTALL" /> 
      <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
      <action android:name="android.intent.action.PACKAGE_REPLACED" /> 
      <data android:scheme="package" /> 
      </intent-filter> 
     </receiver> 

回答

-1

據我所知,這是不可能的的Android隱私的原因。沒有廣播說,應用程序已安裝。

+2

除非我誤解了文檔,這是它:http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED – Lucas

1

包括此也

<receiver android:name=".InstallReceiver"> 
    <intent-filter > 
     <action android:name="android.intent.action.PACKAGE_ADDED"/> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 

其他一切你所做的似乎是正確的。

唯一的其他可能性是prijupaul說,出於安全原因,此廣播可能不再工作。

+0

我也試過這個,我仍然無法得到它的工作。我認爲它仍然在系統中工作。我的手機上有防病毒程序,會在下載並安裝新應用程序時觸發。 – Lucas

0

from the developer.android.com ref。 - 「請注意,新安裝的軟件包未收到此廣播。」 - 所以你無法檢測到你自己的軟件包安裝。它應該檢測其他軟件包安裝。

0

Documentation說:「廣播事件:一個新的應用程序包已經安裝在設備上的數據包含了包的名稱注意,新安裝包不會收到此廣播。」

+1

我認爲這意味着新安裝的軟件包在安裝時不會收到安裝廣播。我試圖在我的軟件包安裝後檢測其他軟件包的安裝。他們的措辭在我看來似乎有點不清楚,但我確實得到了它的工作,所以這是我對這個意義的最好猜測。 – Lucas