【问题标题】:Share to Facebook Button android studio分享到 Facebook 按钮 android studio
【发布时间】:2015-07-29 10:01:13
【问题描述】:

我有一个应用程序,我可以在其中分享到 facebook 和 twitter 按钮。我可以使用 Twitter 按钮进行管理,但是 facebook 共享的这段代码给了我错误,它使我的应用程序崩溃。这是我第一次使用 Facebook sdk,在 Facebook DOCS 中找不到相关解释。该按钮应向用户墙发布一条文字说明。

public void shareToFacebook(View view){
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://developers.facebook.com")).setRef("eee")
        .build();
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
ShareButton shareButton = (ShareButton)findViewById(R.id.sharefb);
shareButton.setShareContent(content);
// this part is optional
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {});
            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);
            }

这基本上是 DOCS 中的内容,因为我无法编译它,然后查看 Log 中的哪些部分。

更新:

这是错误日志: 引起:java.lang.reflect.InvocationTargetException

不是抽象的,不会覆盖 FacebookCallback 中的抽象方法 onError(FacebookException)

 Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3964)
            at android.view.View.performClick(View.java:4637)
            at android.view.View$PerformClick.run(View.java:19422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5586)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.inc.nicky.tapit.TapAdventure.moveButton(TapAdventure.java:126)
            at com.inc.nicky.tapit.TapAdventure.tapped(TapAdventure.java:136)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3964)
            at android.view.View.performClick(View.java:4637)
            at android.view.View$PerformClick.run(View.java:19422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5586)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at        com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
            at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你能添加错误日志/堆栈跟踪吗?

标签: android facebook post


【解决方案1】:

如果您想在 facebook 上分享带有标题的图片,此功能可能会有所帮助。

有两种类型可以共享第三方库上的任何东西。

(i) 使用意图。 ==> 问题是,当您在 Facebook 上使用 Intent 进行分享时,无法 用图片显示标题。

(ii)。你必须在你的项目中实现第三方库。

现在,这个问题。

(1)。只需我创建一个分享到 facebook 的功能。 (2).调用它 分享按钮 onClick 事件。

第 1 步:

private void sharePhotoToFacebook()
{
   Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.avatar);

   SharePhoto photo = new SharePhoto.Builder()
                .setBitmap(image)
                .setCaption("Nice Place.....")
                .build();

  SharePhotoContent content = new SharePhotoContent.Builder()
                .addPhoto(photo)
                .build();

  ShareApi.share(content,null);
  Toast.makeText(facebook_signin.this,"Facebook Photo Upload Complated",Toast.LENGTH_LONG).show();

}

第 2 步:

share.setOnClickListener(   new View.OnClickListener() {
            @Override
            public void onClick(View view) 
            {
                sharePhotoToFacebook();
            }
        });

第 3 步: 用facebook账号登录,在这里我们可以看到上传的帖子。

【讨论】:

  • 我尝试使用它,但它无法识别 setCaption。您使用的是哪个版本的 FacebookSDK?
  • 编译'com.facebook.android:facebook-android-sdk:4.1.0'
  • 你也可以通过分享对话框来做到这一点
  • 现在我收到这个奇怪的错误:无法执行活动的方法 原因:java.lang.reflect.InvocationTargetException 原因:java.lang.NullPointerException
【解决方案2】:

可以使用facebook sdk的分享对话框来实现。

第 1 步: 创建对象 ShareDialog 类,默认为 facebook sdk 4.+ 版本。

ShareDialog shareDialog;

第 2 步: 在 onCreate 中。

shareDialog = new ShareDialog(this);

第三步:在布局中创建一个按钮并在onCreate中赋值。

share = (Button)findViewById(R.id.share);

第四步:在分享按钮的onClick事件中

 ImageView ivImage = (ImageView) findViewById(R.id.img_share);
            Uri bmpUri = getLocalBitmapUri(ivImage);

            SharePhoto photo = new SharePhoto.Builder()
                    .setBitmap(bmp)
                    .setCaption("This Is Nice Place !!!!!")
                    .build();

            SharePhotoContent content = new SharePhotoContent.Builder()
                    .addPhoto(photo)
                    .build();
            shareDialog.show(content);



            ShareLinkContent content = 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(content);

【讨论】:

  • setCaption 无法识别。这应该在片段中完成吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
相关资源
最近更新 更多