2015-07-29 2 views
2

У меня есть приложение, в котором у меня есть доля в facebook и twitter button. Мне удалось управлять с помощью кнопки Twitter, но этот код для общего доступа к facebook дает мне ошибки, и это приводит к сбою моего использования. Это первый раз, когда я использую sdk для Facebook, и я не смог найти соответствующие объяснения в DOCS Facebook. Кнопка должна опубликовать на стене пользователей текст, говорящий что-то.Опубликовать в Facebook Button android studio

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, как я был не в состоянии собрать его, а затем посмотреть, что часть делает то, что с Лога.

ОБНОВЛЕНИЕ:

Вот это журнал регистрации ошибок: Вызванный: java.lang.reflect.InvocationTargetException

не является абстрактным и не переопределить абстрактный метод OnError (FacebookException) в FacebookCallback

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) 
+1

может у пожалуйста, добавьте журнал ошибок/StackTrace? – Wops

+0

Да, я обновил его. – EnderNicky

ответ

0

Если вы хотите поделиться изображением с надписью на facebook, эта функция может помочь.

Существует два типа для обмена любыми вещами в сторонних библиотеках.

(i) Using intent. ==> problem is that when you share using intent on facebook that can't display title with image.

(ii). you must implement third parti libraries into your project.

Теперь для этого вопроса.

(1). Simply i create a function for share to facebook. (2).call it on share button onClick event.

шаг 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 счета и здесь мы видим, пост, который загружается ,

+0

Я попытался использовать это, но он не распознает setCaption. Какую версию FacebookSDK вы используете? – EnderNicky

+0

compile 'com.facebook.android:facebook-android-sdk:4.1.0' –

+0

Вы также можете сделать это по общему диалогу –

0

Это может быть возможно с помощью диалогового окна совместного доступа в facebook sdk.

Шаг 1: Создать объект Класс ShareDialog по умолчанию для facebook sdk 4. +.

ShareDialog shareDialog; 

Шаг 2: В OnCreate.

shareDialog = new ShareDialog(this); 

Шаг 3: Создание одной кнопки в макете и назначить его в OnCreate.

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

Шаг 4: В 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); 
+0

setCaption не распознается. Должно ли это быть сделано в фрагменте? – EnderNicky

Смежные вопросы