找不到用于处理意图的活动{act = android.intent.action.VIEW dat = fb:// page / FACEBOOK_PAGE_ID

时间:2019-04-04 06:29:01

标签: android


标题中的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 }

请帮助
谢谢

1 个答案:

答案 0 :(得分:0)

您可以做的是添加打开Facebook应用所需的最低Facebook应用版本。如果应用版本低于最低版本,则可以将其重定向到Play商店供用户更新。

要获取应用程序中另一个应用程序的版本名称,可以使用

PackageInfo packageInfo = getPackageManager().getPackageInfo("com.facebook.katana", 0); return packageInfo.versionName;