如何在我的应用上显示Facebook页面?我已将我的应用程序与Facebook SDK集成,但它只显示登录和注销,但我想以android编程方式获取我的应用程序的特定页面和xml代码。
请帮帮我..
答案 0 :(得分:0)
请使用webview并加载您的fb页面网址。
在xml文件中添加以下代码
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
在您的班级文件中
WebView browser = (WebView) findViewById(R.id.webview);
browser.loadUrl("http://www.facebook.com/yourpage");
在Menifest文件中
<uses-permission android:name="android.permission.INTERNET" />
答案 1 :(得分:0)
这适用于最新版本:
<user_name_here>
(例如https://graph.facebook.com/fsintents)使用此方法:
public static Intent getOpenFacebookIntent(Context context) {
try {
context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
return new Intent(Intent.ACTION_VIEW,
Uri.parse("fb://page/<id_here>"));
} catch (Exception e) {
return new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.facebook.com/<user_name_here>"));
}
}
如果你在手机中安装了Facebook应用程序,这将打开它。否则,Facebook将在浏览器中打开。
答案 2 :(得分:0)
**Integrating Facebook page using webview within android application.**
1. Add a <WebView> element in layout where you want to display facebook page as below.
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2. Access a reference say facebookView in corresponding class for layout as below:
3. facebookView = (WebView) rootView.findViewById(R.id.webview);
4. Call below methods on facebookView object.
5. facebookView.setWebViewClient(new UriWebViewClient());
facebookView.setWebChromeClient(new UriChromeClient());
WebSettings webSettings = facebookView.getSettings();
6. Call below methods on webSettings object.
7. webSettings.setUseWideViewPort(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
8. Create a string variable webcode representing HTML for Facebook page generated from Facebook page plugins https://developers.facebook.com/docs/plugins/page-plugin/. It will be something like
9. String webcode = "<!DOCTYPE html>\n" + "<html>\n" + "<head>\n" + "\t<title>Page Title</title>\n" + "</head>\n"
+ "<body>\n" + "\n" + "<div id=\"fb-root\"></div>\n"
+ "<style>"
+".fb-page, .fb-page:before, .fb-page:after { background-color: red; }"
+ "</style>"
+ "<script>"
+"(function(d, s, id) {\n"
+ " var js, fjs = d.getElementsByTagName(s)[0];\n" + " if (d.getElementById(id)) return;\n"
+ " js = d.createElement(s); js.id = id;\n"
+ " js.src = \"//connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v2.10&appId=1338324869626677\";\n"
+ " fjs.parentNode.insertBefore(js, fjs);\n" + "}(document, 'script', 'facebook-jssdk'));"
+ "</script>\n"
+ "\n"
+ "<div class=\"fb-page\" data-href=\"https://www.facebook.com/rg1breathe\" data-tabs=\"timeline\" data-small-header=\"true\" data-show-facepile=\"false\" data-adapt-container-width=\"true\" data-hide-cover=\"false\"><blockquote cite=\"https://www.facebook.com/rg1breathe\" class=\"fb-xfbml-parse-ignore\"><a href=\"https://www.facebook.com/rg1breathe\">RoundGlass Breathe</a></blockquote></div>\n"
+ "</body>\n" + "</html>";
10. Call below method on facebookView object.
11. facebookView.loadDataWithBaseURL("https://www.facebook.com", webcode, "text/html", "utf-8", null);
12. Create UriWebViewClient and UriChromeClient as below :
private class UriWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String host = Uri.parse(url).getHost();
Log.d(TAG, "page finished url: " + url + ", host: " + host);
if (url.contains("/plugins/close_popup.php?reload")) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
mContainer.removeView(mWebviewPop);
loadFacebookPage();
}
}, 600);
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
Log.d("onReceivedSslError", "onReceivedSslError");
}
}
class UriChromeClient extends WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
Log.d("onCreateWindow", "called");
mWebviewPop = new WebView(getActivity());
setSettings(mWebviewPop.getSettings());
view.setClickable(true);
mWebviewPop.setVerticalScrollBarEnabled(true);
mWebviewPop.setHorizontalScrollBarEnabled(true);
mWebviewPop.setWebViewClient(new UriWebViewClient());
mWebviewPop.setWebChromeClient(this);
mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mContainer.addView(mWebviewPop);
mWebviewPop.requestFocus();
facebookView.setVisibility(View.GONE);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebviewPop);
resultMsg.sendToTarget();
return true;
}
@Override
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d("WebViewDebug", cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId());
return true;
}
@Override
public void onCloseWindow(WebView window) {
mContainer.removeViewAt(mContainer.getChildCount() - 1);
mWebviewPop = null;
facebookView.setVisibility(View.VISIBLE);
facebookView.requestFocus();
}
}