0

Я получаю эту ошибку при попытке использовать SDK для Android для Android.FacebookException: Не удалось скопировать изображение

Это мой выполнить вызов:

new getBitmapFromUrl().execute("https://fs02.androidpit.info/userfiles/4110382/image/Android/android-6-0-marshmallow-hero-w782.jpg"); 

Мой код асинхронной:

public class getBitmapFromUrl extends AsyncTask<String,String,Bitmap>{ 
    @Override 
    protected Bitmap doInBackground(String... params) { 
     Bitmap bitmap = null; 
     URL url = null; 
     try { 
      url = new URL(params[0]); 
      HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
      con.setDoInput(true); 
      InputStream inputStream = con.getInputStream(); 
      bitmap = BitmapFactory.decodeStream(inputStream); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return bitmap; 
    } 

    @Override 
    protected void onPostExecute(Bitmap bitmap) { 
     super.onPostExecute(bitmap); 

     SharePhoto sharePhoto = new SharePhoto.Builder() 
       .setBitmap(bitmap) 
       .build(); 
     SharePhotoContent sharePhotoContent = new SharePhotoContent.Builder() 
       .addPhoto(sharePhoto) 
       .build(); 
//shareButton is the facebookSdk default share button to call shareDialog 
     shareButton.setShareContent(sharePhotoContent); 
    } 
} 

Это мой метод обратного вызова:

shareButton.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { 
    @Override 
    public void onSuccess(Sharer.Result result) { 
     Log.e("Status", result.toString()); 
    } 

    @Override 
    public void onCancel() { 

    } 

    @Override 
    public void onError(FacebookException error) { 
     Log.e("Status", error.toString()); 
    } 
}); 

И мой onActivity обратного вызова:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

Мой Manifest код:

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> 
    <provider 
     android:authorities="com.facebook.app.FacebookContentProvider1507510099556071" 
     android:name="com.facebook.FacebookContentProvider"/> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.facebook.FacebookActivity"/> 
</application> 

Если мой код не является правильным, пожалуйста, предложите хороший пример. :-)

+0

Что вы на самом деле хотите? Вы хотите поделиться имиджем с Facebook? –

+0

да! Я изучаю документацию на facebook sdk. Так что я попробовал метод sharePhotoContent, но он показывает, что мне не удалось скопировать ошибку! – prasanthMurugan

+0

любезно опубликуйте свой демонстрационный фрагмент PLS –

ответ

0

Ваш код в порядке. Но нужны некоторые мелкие хитрости.

Надеюсь, вы не добавили правильное растровое изображение для совместного использования. Проверьте ниже вещи в вашем коде.

В сообщении execute вы добавили «mBitmap». Вам нужно добавить «растровое изображение», которое вы получили из параметров.

На ваш onCreate любезно звоните и инициируйте диалог SDK и общего доступа к Facebook. Проверьте образец ниже.

// Декларация

CallbackManager callbackManager; 
ShareDialog shareDialog; 

// Ниже следует идти под OnCreate.

FacebookSdk.sdkInitialize(this); 
    callbackManager = CallbackManager.Factory.create(); 
    shareDialog = new ShareDialog(this); 
    shareButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
// Initiate share by downloading the image. 
     new getBitmapFromUrl().execute("https://fs02.androidpit.info/userfiles/4110382/image/Android/android-6-0-marshmallow-hero-w782.jpg"); 
     } 
    }); 

// Загрузить файл с пути и вернуть растровое изображение.

public class getBitmapFromUrl extends AsyncTask<String, String, Bitmap> { 
@Override 
protected Bitmap doInBackground(String... params) { 
    Bitmap bitmap = null; 
    URL url = null; 
    try { 
    url = new URL(params[0]); 
    HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
    con.setDoInput(true); 
    InputStream inputStream = con.getInputStream(); 
    bitmap = BitmapFactory.decodeStream(inputStream); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
    return bitmap; 
} 
    @Override 
    protected void onPostExecute(Bitmap bitmap) { 
     super.onPostExecute(bitmap); 

     SharePhoto sharePhoto = new SharePhoto.Builder() 
       .setBitmap(bitmap) 
       .build(); 
     SharePhotoContent sharePhotoContent = new SharePhotoContent.Builder() 
       .addPhoto(sharePhoto) 
       .build(); 
//  shareButton.setShareContent(sharePhotoContent); 
     shareDialog.show(sharePhotoContent); 
    } 
    } 

Запросы дайте мне знать.!

+0

Я сделал все вышеперечисленное !! Но я поделился видео и ссылкой на facebook с помощью sdk и sandbox. Вы можете отправить мне код для растрового изображения в setBitmap (bitmap). Я считаю, что преобразование растровых изображений - это моя проблема – prasanthMurugan

+0

Я не могу найти изменения. Он выглядит так же, как и я, на вопрос. Не могли бы вы мне помочь. – prasanthMurugan

+0

можете ли вы разместить весь свой код? –

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