在标题中,FACEBBOK_PAGE_ID是我的facebook页面的整数id。 在我的Android应用程序中,点击按钮说“Fllow us on facebook”,我必须重定向应用程序 - 1.如果安装了Facebook应用程序并且用户已登录 - 重定向到Facebook页面Facebook应用程序。 2.如果安装了facebook app但用户未登录 - 重定向到facebook应用程序中的facebook登录页面。 3.如果未安装Facebook应用程序 - 在浏览器中打开Facebook页面URL。 我用以下代码完成了这个
@OnClick(R.id.rl_follow_us_on_fb)
public void onClickFollowUs(){
Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
String facebookUrl = getFacebookPageURL(mParentActivity);
facebookIntent.setData(Uri.parse(facebookUrl));
startActivity(facebookIntent);
}
获取Facebook页面网址的功能是 -
public String getFacebookPageURL(Context context) {
PackageManager packageManager = context.getPackageManager();
try {
PackageInfo packageInfo =context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
if (packageInfo != null) {
if (packageInfo.applicationInfo.enabled) {
return "fb://page/FACEBOOK_PAGE_ID";
} else {
return FACEBOOK_URL;
}
} else {
return FACEBOOK_URL;
}
} catch (PackageManager.NameNotFoundException e) {
return FACEBOOK_URL; //normal web url
}
}
这工作正常,但是当用户启用Facebook应用程序时,应用程序崩溃,如果它被禁用并点击按钮“Fllow us on facebook”并发生以下崩溃:
E/UncaughtException: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=fb://page/FACEBOOK_PAGE_ID }
请帮忙
谢谢
您可以做的是添加打开Facebook应用程序所需的最低Facebook应用程序版本。如果应用版本低于最低版本,您可以将其重定向到播放商店以供用户更新。
要获取应用程序中其他应用程序的版本名称,您可以使用
PackageInfo packageInfo = getPackageManager().getPackageInfo("com.facebook.katana", 0);
return packageInfo.versionName;