如何从ImageButton(Android)打开Facebook个人资料/页面

时间:2014-11-08 17:31:56

标签: android facebook onclicklistener imagebutton

我是Android开发新手

我使用imagebutton开发一个新应用到facebook个人资料/页面

我尝试了这段代码,但是此代码在浏览器中打开了facebook

public class AboutActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about);


    ImageButton f = (ImageButton)findViewById(R.id.f_logo);
      f.setOnClickListener(new OnClickListener() 
       {  
            public void onClick(View arg0) 
              { 
                   Intent browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(
                   "http://www.facebook.com/sarmad.waleed.7"));
                    startActivity(browserIntent);

                   }
             }); 
          }
      }

我的问题是如何打开Facebook个人资料/页面来自FB应用程序中的图像按钮(如果已安装),如果没有,则在浏览器中打开它

我也检查了这个

how to link the image button to a facebook page in android

但在浏览器中打开相同的Facebook页面

然后我尝试了" com.facebook.katana"但我不知道该怎么做

2 个答案:

答案 0 :(得分:2)

自从 1.9.11 版本以来,Facebook Android应用程序不支持此操作的隐式意图机制。 Facebook现在使用相同的iPhone方案机制fb://facebook://来处理here提到的所有操作。

在这里你可以看到他们支持fb和facebook计划。

    <activity android:name="com.facebook.katana.IntentUriHandler">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="facebook" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="fb" />
        </intent-filter>
    </activity>

根据您的要求,此方法将处理这两种情况。首先,它将检查是否已安装Facebook应用程序,否则将在浏览器中打开Facebook个人资料页面。

public Intent getFBIntent(Context context, String facebookId) {

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

        String facebookScheme = "fb://profile/" + facebookId;
        return new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); 
    }
    catch(Exception e) {

        // Cache and Open a url in browser
        String facebookProfileUri = "https://www.facebook.com/" + facebookId;
        return new Intent(Intent.ACTION_VIEW, Uri.parse(facebookProfileUri));
    }

    return null;
}

要使用用户个人资料打开Facebook应用,您需要做的就是:

Intent facebookIntent = getFBIntent(this, "2347633432");
startActivity(facebookIntent);

** 编辑 **

这是您在活动中调用上述方法的方法。那就是它!

public class AboutActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_about);

     ImageButton f = (ImageButton)findViewById(R.id.f_logo);
     f.setOnClickListener(new OnClickListener() 
     {  
        public void onClick(View arg0) 
        { 
           // Get the intent
           Intent intent = getFBIntent(AboutActivity.this, "sarmad.waleed.7");

           // Start the activity
           if (intent != null)
                startActivity(intent);
        }
     }); 
   }

   /**
    * Get the facebook intent for the given facebook
    * profile id. If the facebook app is installed, then
    * it will open the facebook app. Otherwise, it will
    * open the facebook profile page in browser.
    *
    * @return - the facebook intent
    */
   private Intent getFBIntent(Context context, String facebookId) {

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

         String facebookScheme = "fb://profile/" + facebookId;
         return new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); 
      }
      catch(Exception e) {

         // Cache and Open a url in browser
         String facebookProfileUri = "https://www.facebook.com/" + facebookId;
         return new Intent(Intent.ACTION_VIEW, Uri.parse(facebookProfileUri));
     }

     return null;
   }
}

答案 1 :(得分:0)

对于 Facebook 个人资料:

//ID initialization
ImageView facebook = findViewById(R.id.facebookID);

//OnClickListener
facebook.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            try {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://facewebmodal/f?href=https://www.facebook.com/techsajib"));
                startActivity(intent);
            } catch(Exception e) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/techsajib")));
            }
        }
    });

对于 Facebook 主页:

 //ID initialization
ImageView facebook = findViewById(R.id.facebookID);

//OnClickListener
facebook.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String facebookId = "fb://page/327031464582675";
            String urlPage = "http://www.facebook.com/MDSaziburRahmanBD";

            try {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookId )));
            }catch (Exception e){
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(urlPage )));
            }
        }
    });