2012-12-27 42 views
2

我已經保存了一個按鈕,它將用戶帶到我的Facebook頁面。 爲了使官方的Facebook應用程序打開我使用以下網址:Android:檢查Facebook應用程序是否存在於用戶的設備上

fb://pages/PAGE_ID 

,而不是http://facebook.com/PAGE_ID

因爲在這種情況下,你的瀏覽器的列表,打開網址,而不是考覈的Facebook應用程序。

它適用於用戶安裝了Facebook應用程序。但是,如果用戶沒有facebook應用程序,它會崩潰。

有什麼方法可以檢查用戶是否有Facebook應用程序?

+0

如何捕捉'fb://'異常,然後用'http://'URL嘗試? –

回答

5

你是否已經檢查this? 您可以隨時檢查是否安裝了類似this的應用程序。

1

在一個原生的Android應用程序,這是很容易做到:

Uri dataUri = Uri.parse("fb://...."); 
Intent receiverIntent = new Intent(Intent.ACTION_VIEW, dataUri); 

PackageManager packageManager = getPackageManager(); 
List<ResolveInfo> activities = packageManager.queryIntentActivities(receiverIntent, 0); 

if (activities.size() > 0) { 
    startActivity(receiverIntent); 
} else { 
    Uri webpage = Uri.parse("http://www.facebook.com/..."); 
    Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage); 

    packageManager = getPackageManager(); 
    activities = packageManager.queryIntentActivities(webIntent, 0); 

    if (activities.size() > 0) { 
     startActivity(webIntent); 
    } 
} 
1

我想你可以重複使用我寫的代碼來檢查設備上是否安裝了twitter應用程序,以檢查是否安裝了facebook應用程序。對於twitterApps列表,您必須用「com.facebook.katana」替換值。

public Intent findTwitterClient() { 
      final String[] twitterApps = { "com.twitter.android", "com.handmark.tweetcaster", "com.seesmic", "com.thedeck.android", "com.levelup.touiteur", "com.thedeck.android.app" }; 

      Intent tweetIntent = new Intent(Intent.ACTION_SEND); 
      tweetIntent.putExtra(Intent.EXTRA_TEXT, "#hashtagTest"); 
      tweetIntent.setType("text/plain"); 
      final PackageManager packageManager = getPackageManager(); 
      List<ResolveInfo> list = packageManager.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY); 

      for (int i = 0; i < twitterApps.length; i++) { 
        for (ResolveInfo resolveInfo : list) { 
          String p = resolveInfo.activityInfo.packageName; 
          if (p != null && p.startsWith(twitterApps[i])) { 
            tweetIntent.setPackage(p); 
            return tweetIntent; 
          } 
        } 
      } 
      return null; 
    } 
相關問題