2014-04-09 172 views
4

許多應用程序提供了安裝開發人員或開發人員合作伙伴製作的其他應用程序的建議。這些建議只是指向可以安裝推薦應用的Play商店的鏈接。如何檢測Google Play商店是否正在下載/安裝特定應用?

我不想爲X程序,如果推薦:

  • X程序已經安裝
  • X程序是在安裝過程中(例如,下載谷歌上播放)

檢測X是否安裝很容易,但我似乎無法找到任何API從Google Play讀取下載/安裝狀態。有什麼方法可以檢測用戶是否正在安裝應用程序X?

回答

3

有什麼方法可以檢測用戶是否正在安裝 app X?

最接近你會得到這是通過使用NotificationListenerService

從文檔:

,當新的通知 張貼或從系統中刪除接聽電話的服務。

但考慮到這Service API等級18,你的使用情況最近才加入,你可以考慮使用一個BroadcastReceiver,並聆聽時android.intent.action.PACKAGE_ADDEDandroid.intent.action.PACKAGE_REMOVED被調用。通過這種方式,一旦安裝或刪除了應用程序,就可以使用包名稱進行操作,例如提供Play商店的鏈接。

下面是一個例子:

廣播接收器

public class PackageChangeReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent == null || intent.getData() == null) { 
      return; 
     } 

     final String packageName = intent.getData().getSchemeSpecificPart(); 
     // Do something with the package name 
    } 

} 

在你AndroidManifest

<receiver android:name="your_path_to.PackageChangeReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_ADDED" /> 
     <action android:name="android.intent.action.PACKAGE_REMOVED" /> 

     <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 
+0

安裝結束後會觸發這個問題:http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED我需要知道包下載(安裝流程開始)何時開始。 – UsAaR33

+1

@ UsAaR33對,因此我的第一個建議。當用戶開始安裝應用時,沒有任何其他方式可以立即知道。如果您想在應用中顯示指向朋友應用的鏈接,有沒有什麼特別的原因,你不能等待幾秒鐘,直到下載和安裝完成? – adneal

+0

啊錯過了NotificationListener;看起來很完美! – UsAaR33

-1

我知道有一種方法可以做到這一點。但是,它將要求您從URL開始下載。

背後的簡單想法是使用

getContentLength() 

看到字節的應用程序的內容長度。

然後,您可以簡單地使用

YouInputStream.read(TheData) 

看到下載的進度。

其實是有關於如何在Download a file with Android, and showing the progress in a ProgressDialog

做了關於這一點更詳細的答案,也許你可以訪問在其上下載的應用程序的插座,然後遵循相同的步驟以上。我對這個壽命沒有任何經驗。

+0

Play商店應用正在下載。我將如何訪問其套接字? – UsAaR33

相關問題