ton*_*777 5 java android facebook
请帮忙
我将按钮贴到墙上的代码:
btnPostToWall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
postToWall();
}
});
public void postToWall() {
// post on user's wall.
facebook.dialog(this, "feed", new DialogListener() {
@Override
public void onFacebookError(FacebookError e) {
}
@Override
public void onError(DialogError e) {
}
@Override
public void onComplete(Bundle values) {
}
@Override
public void onCancel() {
}
});
}
Run Code Online (Sandbox Code Playgroud)
但我有新的Faceboof android sdk 4.0.0和这个代码depreacated
怎么贴到新的图书馆?
我看了这个,但我不明白如何使用
有关如何从Android SDK 4.0共享的官方Facebook文档位于:
https://developers.facebook.com/docs/sharing/android
该链接提供了如何通过调用Graph API进行共享或通过调用本机Facebook应用程序对话框进行共享的示例.
以下是我在自己的应用中实现共享对话框的方法:
在我添加的活动/片段的xml中 Button
<Button
android:layout_width="144dp"
android:layout_height="144dp"
android:id="@+id/shareFacebookButton"
android:text=""
android:background="@drawable/facebook_button"
android:layout_gravity="center"
android:layout_marginBottom="6dp"
/>
Run Code Online (Sandbox Code Playgroud)
然后在片段内:
Button shareButton = (Button)view.findViewById(R.id.shareFacebookButton);
shareDialog = new ShareDialog(this);
callbackManager = CallbackManager.Factory.create();
shareDialog.registerCallback(callbackManager, new
FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {}
@Override
public void onCancel() {}
@Override
public void onError(FacebookException error) {}
});
shareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Hello Facebook")
.setContentDescription("The 'Hello Facebook' sample showcases simple Facebook integration")
.setContentUrl(Uri.parse("http://developers.facebook.com/android"))
.build();
shareDialog.show(linkContent);
}
}});
Run Code Online (Sandbox Code Playgroud)
现在,当有人点击按钮时,他们将会像您期望的那样得到Facebook对话框.
希望这可以帮助.
也许它不是你想要的解决方案,但我正在使用它.
Facebook Android SDK 4有ShareApi
分享您内容的课程.这个类有静态方法share()
:
public static void share(
final ShareContent shareContent,
final FacebookCallback<Sharer.Result> callback) {
new ShareApi(shareContent)
.share(callback);
}
Run Code Online (Sandbox Code Playgroud)
和非静态私有String message
.所以,当你想分享一些东西时(例如,
ShareApi api = new ShareApi(content);
api.setMessage("My message");
api.share(content, new FacebookCallback<Sharer.Result>() ...)
Run Code Online (Sandbox Code Playgroud)
)将创建ShareApi
with的新实例,message = null
并且不会添加您的消息.
解决方案:
ShareApi
如果您使用Facebook SDK作为外部库,请打开课程或从Github https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/share/ShareApi复制此课程. java
如果您正在使用Maven存储库.
更改此代码:
public static void share(
final ShareContent shareContent,
final FacebookCallback<Sharer.Result> callback) {
new ShareApi(shareContent)
.share(callback);
}
Run Code Online (Sandbox Code Playgroud)
到这一个:
public static void share(final String message,
final ShareContent shareContent,
final FacebookCallback<Sharer.Result> callback) {
new ShareApi(message, shareContent)
.share(callback);
}
Run Code Online (Sandbox Code Playgroud)更改此代码:
public ShareApi(final ShareContent shareContent) {
this.shareContent = shareContent;
this.graphNode = DEFAULT_GRAPH_NODE;
}
Run Code Online (Sandbox Code Playgroud)
到这一个:
public ShareApi(String message, final ShareContent shareContent) {
this.message = message;
this.shareContent = shareContent;
this.graphNode = DEFAULT_GRAPH_NODE;
}
Run Code Online (Sandbox Code Playgroud)使用您更改的ShareApi
课程来分享您的内容:
ShareApi.share("My message", content, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
if (AppConfig.DEBUG) {
Log.d(TAG, "SUCCESS");
}
}
@Override
public void onCancel() {
if (AppConfig.DEBUG) {
Log.d(TAG, "CANCELLED");
}
}
@Override
public void onError(FacebookException error) {
if (AppConfig.DEBUG) {
Log.d(TAG, error.toString());
}
}
});
Run Code Online (Sandbox Code Playgroud)如果您只想共享文本,可以使用下面的代码作为content
对象:
ShareLinkContent content = new ShareLinkContent.Builder()
.build();
Run Code Online (Sandbox Code Playgroud)
您已经阅读过本手册https://developers.facebook.com/docs/sharing/android,可以ShareContent
在帖子中添加不同的内容.使用Facebook Github存储库中的示例来更好地理解新SDK.
PS当然,您应该拥有有效的访问令牌和publish_actions
权限.