我是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"但我不知道该怎么做
答案 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 )));
}
}
});