我保留了一个按钮,可将用户带到我的 Facebook 页面。为了打开官方 facebook 应用程序,我使用以下网址:
fb://pages/PAGE_ID
而不是http://facebook.com/PAGE_ID
因为在这种情况下,您会获得一个浏览器列表来打开 url 而不是 facebook 应用程序。
如果用户安装了 facebook 应用程序,它就可以工作。但是,如果用户没有 facebook 应用程序,它会崩溃。
有什么方法可以检查用户是否有 facebook 应用程序?
我保留了一个按钮,可将用户带到我的 Facebook 页面。为了打开官方 facebook 应用程序,我使用以下网址:
fb://pages/PAGE_ID
而不是http://facebook.com/PAGE_ID
因为在这种情况下,您会获得一个浏览器列表来打开 url 而不是 facebook 应用程序。
如果用户安装了 facebook 应用程序,它就可以工作。但是,如果用户没有 facebook 应用程序,它会崩溃。
有什么方法可以检查用户是否有 facebook 应用程序?
在原生 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);
}
}
我认为您可以重复使用我编写的这段代码来检查设备上是否安装了 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;
}