2011-07-15 521 views
58

我正在修改我的應用程序,以便能夠捕捉用戶是否嘗試發佈而未安裝Facebook應用程序(SSO需要)。這裏是我使用的代碼:如何檢查Facebook是否安裝Android

try{ 
    ApplicationInfo info = getPackageManager(). 
      getApplicationInfo("com.facebook.android", 0); 
    return true; 
} catch(PackageManager.NameNotFoundException e){ 
    return false; 
} 

問題是,它總是捕捉一個錯誤。根據問題here,我需要請求適當的權限,但我不知道我需要什麼權限請求。

是我的問題一個權限或其他?

回答

91

com.facebook.android是Facebook SDK的軟件包名稱。 Facebook應用程序是com.facebook.katana。

+0

如果您有興趣以便捷的方式檢查設備上其他應用的軟件包名稱,我發現這個應用很有用:https://play.google.com/store/apps/details?id=com。 electricsheep.asi&hl = en_GB – hmac

-1
Intent i = new Intent(android.content.Intent.ACTION_VIEW); 
i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.facebook.katana")); 
startActivity(i); 

此代碼爲我工作

+0

回答與問題無關。他在問別的東西。 – AndroidMechanic

+0

請在回答問題之前仔細閱讀。乾杯 –

0

最好的辦法是選擇包括com.facebook軟件包的名稱,但無論如何你可以使用下面的包:

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.android
0

寫出you.This意志功能將幫助您檢查已安裝任何應用程序或not.let我說我自己是在Utilities.java

public static boolean isAppInstalled(Context context, String packageName) { 
     try { 
      context.getPackageManager().getApplicationInfo(packageName, 0); 
      return true; 
     } catch (PackageManager.NameNotFoundException e) { 
      return false; 
     } 
    } 

然後在工具的功能或任何訴訟,從任何地方調用此功能。對於如檢查的Facebook應用程序

if(Utilities.isAppInstalled(getApplicationContext(), "com.facebook.katana")) { 
        // Do something 
       }else { 
        Intent i = new Intent(android.content.Intent.ACTION_VIEW); 
        i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.facebook.katana")); 
        startActivity(i); 
       } 

享受

0
if (isAppInstalled()) { 
     Toast.makeText(getApplicationContext(), "facebook app already installed", Toast.LENGTH_SHORT).show(); 
    } else { 
     Toast.makeText(getApplicationContext(), "facebook app not installing", Toast.LENGTH_SHORT).show(); 
    } 



public boolean isAppInstalled() { 
      try { 
       getApplicationContext().getPackageManager().getApplicationInfo("com.facebook.katana", 0); 
       return true; 
      } catch (PackageManager.NameNotFoundException e) { 
       return false; 
      } 
     } 
2

要檢查的任何應用程序安裝在Android或無法使用此方法:

public static boolean isPackageExisted(Context c, String targetPackage) { 

PackageManager pm = c.getPackageManager(); 
    try { 
     PackageInfo info = pm.getPackageInfo(targetPackage, 
       PackageManager.GET_META_DATA); 
    } catch (NameNotFoundException e) { 
     return false; 
    } 
    return true; 
} 

在你的情況使用任何的包

  • com.facebook.orca
  • com.facebook.katana
  • com.example.facebook
  • com.facebook.android

布爾hasPackage = isPackageExisted(MainActivity.this,」 com.facebook.katana「)

希望它能幫助你。