找不到活动来处理Intent {act = android.intent.action.VIEW dat = fb:// page / FACEBOOK_PAGE_ID

问题描述 投票:0回答:1

在标题中,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 } 请帮忙 谢谢

android
1个回答
0
投票

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

要获取应用程序中其他应用程序的版本名称,您可以使用

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

© www.soinside.com 2019 - 2024. All rights reserved.