2013-05-08 4 views
1

Я уже сделал обмен текстами с помощью Facebook SDK. Я застреваю при загрузке изображений с SD-карты. Прежде чем разобрать изображение в FB SDK, сначала конвертируйте изображение в растровое изображение, после чего я должен поделиться с Facebook. Но эта логика не работает. Он никогда не загружает изображения с SD-карты. Может ли кто-нибудь вести меня о том, как загружать изображения с SD-карты? Заранее спасибо.Как загрузить изображение на facebook с sdcard

Bitmap bi = BitmapFactory.decodeStream(fis); 
Bitmap bi =BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() +"/Android/test.jpg", options); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
+0

См. Http://stackoverflow.com/questions/8710515/reading-an-image-file-into-bitmap-from-sdcard – ozbek

+0

Можете ли вы, пожалуйста, поделиться остальной частью кода обмена fb. Мне нужно сделать то же самое, все еще не получая решения. –

ответ

0

попробовать это.

private Facebook facebook = new Facebook("319*********897"); 
byte[] byteArray; 

получить изображение с SD-карты и преобразовать в byteArray.

затем используйте эту функцию для совместного использования изображения на facebook.

public void shareOnFacebook() { 
    // mDuckHuntView.pause(); 

    facebook.authorize(this, new String[] { "publish_stream", 
      "user_photos", "publish_checkins", "publish_actions" }, 
      new DialogListener() { 
       public void onComplete(Bundle values) { 
        try { 

         Bundle bundle = new Bundle(); 
         bundle.putString(
           "name", 
           "text here"); 
         bundle.putByteArray("file", byteArray); 
         bundle.putByteArray(Facebook.TOKEN, values 
           .getString(Facebook.TOKEN).getBytes()); 
         String response = facebook.request("me/photos", 
           bundle, "POST"); 

         Log.d("UPDATE RESPONSE", "" + response); 
         JSONObject json = Util.parseJson(response); 
         if (!json.isNull("id")) { 
          // err("Facebook Image link submitted."); 

         } else { 
          // err("Facebook Error: " + response); 
         } 

        } catch (Exception e) { 


        } catch (FacebookError e) { 

        } 
       } 

       public void onFacebookError(FacebookError e) { 

       } 

       public void onError(DialogError e) { 

       } 

       public void onCancel() { 

       } 

      }); 
} 

Для этого вам необходимо использовать пакет facebook sdk.

+0

Спасибо, он отлично работает. Теперь я могу обмениваться изображениями с SDK. – RAAAAM

+0

Диалог открыт, и после входа в систему изображение не публикуется. Когда я его отлажу. курсор не будет завершен. Вы можете использовать полный код для входа и совместного использования изображения на fb. или любой намек на решение моей проблемы. –

1

попробуйте следующий код, а также проверить растровое изображение не должно пустой ..

Bundle bundle = new Bundle(); 
bundle.putString("message", "post image.."); 

byte[] data = null; 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
<<your bitmap>>.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
data = baos.toByteArray(); 

bundle.putString(Facebook.TOKEN, facebook.getAccessToken()); 
bundle.putString("method", "photos.upload"); 
bundle.putByteArray("picture", data); 
bundle.putString("message", "post image.."); 

mAsyncRunner.request(null,bundle,"POST",new RequestListener() { 
    @Override 
    public void onMalformedURLException(MalformedURLException e, Object state) { 
     Log.d("request RequestListener", "debug onMalformedURLException"); 
    } 
    @Override 
    public void onIOException(IOException e, Object state) { 
    Log.d("request RequestListener", "debug onIOException"); 
    } 
    @Override 
    public void onFileNotFoundException(FileNotFoundException e, Object state) { 
    Log.d("request RequestListener", "debug onFileNotFoundException"); 
    } 
    @Override 
    public void onFacebookError(FacebookError e, Object state) { 
    Log.d("request RequestListener", "debug onFacebookError"); 
    } 
    @Override 
    public void onComplete(String response, Object state) { 
    Log.d("request RequestListener", "debug onComplete"); 
    } 
}, null); 
Смежные вопросы