2010-03-25 63 views
6

我想發佈我的應用程序(ABC)。它是一個有聲讀物文件(只是例如。)包裝爲apk。當用戶安裝這個應用程序時,它需要檢查是否已經安裝了另一個應用程序(XYZ)。如果不讓用戶知道他們必須在安裝ABC之前先安裝應用程序XYZ。Android在安裝過程中檢查依賴應用程序?

在此先感謝

拉傑什

回答

18

如果你知道你正在尋找應用程序的軟件包名稱可以使用PackageManager來測試應用程序的存在。

try{ 
    ApplicationInfo info = getPackageManager() 
          .getApplicationInfo("com.myproject", 0); 
    //-- application exists 
    } catch(PackageManager.NameNotFoundException e){ 
    //-- application doesn't exist 
} 
+1

雖然我不認爲你可以這樣做「安裝」。您需要在第一次運行該應用時最有可能。 – 2010-03-25 20:14:46

+0

正確...我不認爲有可能在安裝時運行此代碼。也就是說,你可以在安裝過程中採取什麼行動?第一次有人真正運行你的應用程序時,檢查是否存在另一個應用程序會更好嗎? – JeremyFromEarth 2010-03-25 20:47:43

+6

「這就是說,你可以在安裝過程中採取什麼行動?」什麼都沒有 - 你不能在用戶的控制下首先啓動你的應用程序。 「在第一次有人真正運行你的應用程序時,檢查是否存在另一個應用程序會更好嗎?」沒有選擇 - 這是唯一的選擇。我曾經爭論過APK的一個依賴系統來處理這種情況,並且響應一直是......不堪設想的。 – CommonsWare 2010-03-25 21:01:03

2

如果XYZ是共享庫,你可以建立你的應用程序,以防止用戶無需安裝XYZ ABC的Android清單。 請使用ABC,的AndroidManifest.xml中內部的元素時指出:

<uses-library android:name="package name of XYZ" android:required="true" /> 

希望這有助於你的問題。

+1

此方法是否通知用戶該應用程序無法安裝,因爲它需要依賴應用程序?如果是這樣,它會把他們帶到市場? – Bear 2012-01-02 01:02:38

+2

* uses-library *設置的效果是應用程序將被市場過濾掉,因此如果* XYZ *尚未安裝在設備中,用戶將無法看到應用程序* ABC *:[市場過濾器](http://developer.android.com/guide/appendix/market-filters.html) – Livio 2012-01-02 13:56:57

相關問題