当Facebook应用程序关闭时,Android在其他Android应用程序中打开特定的Facebook应用程序配置文件页面重定向到新闻源页面

时间:2014-06-24 05:58:01

标签: android facebook facebook-graph-api

我正在尝试使用特定用户ID在我的Android应用中打开某个Facebook个人资料页面。 我的代码打开Facebook应用程序,如果它已安装,否则打开webbrowser。 它工作正常,除非安装Facebook应用程序并关闭它。 在那种情况下,它只是打开新闻源页面而不是个人资料页面。当Facebook应用程序在后台打开时,它会成功重定向到所需的个人资料页面。我怎么解决这个问题?还有官方的facebook文档描述了访问facebook app URI的方法吗?

    try{
        this.getPackageManager()
        .getPackageInfo("com.facebook.katana", 0); //Checks if FB is even installed.

        final String facebookScheme = String.format("fb://profile/%s", user2FbID);
        final Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); 

        facebookIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY
                | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
        startActivity(facebookIntent);
    }catch (Exception e) {
        String facebookScheme = "https://m.facebook.com/" + user2FbID;
        Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); 
        startActivity(facebookIntent);          
    } 

2 个答案:

答案 0 :(得分:4)

试试这个,为我工作

try
        {
            Intent followIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/<your profile_id>"));
            startActivity(followIntent);

            final Handler handler = new Handler();
            handler.postDelayed(new Runnable()
            {
                @Override
                public void run() {
                    Intent followIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/<your profile_id>"));
                    startActivity(followIntent);
                }
            }, 1000 * 2);

        }
        catch (Exception e)
        {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/<user_name>")));
            String errorMessage = (e.getMessage()==null)?"Message is empty":e.getMessage();
            Log.e("Unlock_ScreenActivity:FacebookAppNotFound" ,errorMessage);
        }

答案 1 :(得分:4)

这也发生在我身上。更新了Facebook应用程序,它现在已经解决了,似乎与Facebook有关。它现在正常工作。

以下是我使用的代码:

public static Intent getOpenFacebookIntent(Context context) {
        try{
           // open in Facebook app
           context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
           return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/<profile_id>"));
        } catch (Exception e) {
           // open in browser
          return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/<profile_id>"));
        }
    }