2012-08-12 57 views
2

我想知道作爲App1的特定應用程序已安裝或未在我的應用程序上。
這裏我不知道該App1的實際包名(App1是唯一的名稱)。
那麼如何找到該應用程序目前安裝或不?
我已經試過了,如何查找特定應用程序是否由他的姓名安裝?

private static final String PACKAGE_NAME = "App1"; 

/** 
* Returns true if "App1" is installed. 
*/ 
public static boolean isApp1Installed(Context context) 
{ 
    boolean output = false; 
    PackageManager pm = context.getPackageManager(); 
    try { 
     PackageInfo pi = pm.getPackageInfo(PACKAGE_NAME, 0); 
     if(pi != null) 
     { 
      output = true; 
     } 
    } catch (PackageManager.NameNotFoundException e) {} 
    return output; 
} 

請幫助我..

回答

3

可以使用PackageManager通過使用來獲取所有已安裝的軟件包的列表:

getInsatlledPackages 

或列表活動由

queryIntentActivities 

意圖與CATEGORY_LAUNCHER

通過名字就可以找到應用程序是否安裝與否:

String appname = packageManager.getApplicationLabel(pk).toString(); 

您也可以按照下面的鏈接以獲得更多幫助:

http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon

希望能解決你的問題。

+0

它的工作原理,但Krylez說的是真的...謝謝你.. – posteritysystem 2012-08-12 06:18:17

2

Qwerty是正確的,你應該接受他/她的答案,但我想補充說的是,有些情況下,這種方法沒有按預期執行。如果您正在檢查市場上的應用程序,則不會有任何問題。如果您正在檢查某個默認的Android系統應用,則可能有問題(就像我一樣)。一些製造商替換了諸如股票消息應用程序之類的東西,並且通常可以通過檢查包裝是否存在來檢查。然而,一家制造商決定用一個新的包名取代股票消息應用程序,並讓舊的包沒有任何活動。我通過檢查PackageInfo.activities的大小來解決這個問題。如果它是空的,就像應用程序不在那裏一樣。

+0

給予好評你真的很好Answer.Thanks。 – posteritysystem 2012-08-12 06:19:06

+0

如何獲取應用大小? – posteritysystem 2012-08-12 06:19:36

+0

這很棘手。我不認爲有一個可靠的方法來做到這一點。 http://stackoverflow.com/questions/1806286/getting-installed-app-size – Krylez 2012-08-12 06:23:43

0

你可以只檢查是否有打算向它:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.myapp"); 

if (launchIntent == null) { 
    // it is not installed 
} 
相關問題