标题中的FACEBBOK_PAGE_ID是我的Facebook页面的整数ID。
在我的android应用程序中,点击按钮说“在Facebook上吸引我们”,我必须重定向应用程序-
1.如果已安装facebook应用程序且用户已登录-重定向到facebook页面facebook应用程序。
2.如果已安装facebook应用程序但未登录用户-重定向到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应用程序(如果已禁用)并单击按钮“在Facebook上给我们发送信息”,则应用程序崩溃,并发生以下崩溃:
E/UncaughtException: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=fb://page/FACEBOOK_PAGE_ID }
请帮助
谢谢
答案 0 :(得分:0)
您可以做的是添加打开Facebook应用所需的最低Facebook应用版本。如果应用版本低于最低版本,则可以将其重定向到Play商店供用户更新。
要获取应用程序中另一个应用程序的版本名称,可以使用
PackageInfo packageInfo = getPackageManager().getPackageInfo("com.facebook.katana", 0);
return packageInfo.versionName;