2016-08-01 117 views
0

我正嘗試使用Android SDK在Facebook上分享照片。在Facebook上分享照片Android SDK

問題是我的Bitmap圖像爲空。這是我的代碼:

public void sharePhoto(View view) { 
     if (Session.getInstance().getUserFace().getBestphoto() == null) { 
      Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(i, RESULT_LOAD_IMAGE); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
      Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 
      Log.d("picture path", picturePath); 
      BitmapFactory.Options options = new BitmapFactory.Options(); 
      try { 
       Bitmap image = BitmapFactory.decodeFile(picturePath, options); 
       uploadPhoto(image); 
      } catch (OutOfMemoryError e) { 
       try { 
        options = new BitmapFactory.Options(); 
        options.inSampleSize = 2; 
        Bitmap image = BitmapFactory.decodeFile(picturePath, options); 
        uploadPhoto(image); 
       } catch (Exception ex) { 
        Log.e("EXCEPTION", ex.toString()); 
       } 
      } 
     } 
    } 

    private void uploadPhoto(Bitmap image) { 
     Log.d("Image", "" + image); 
     SharePhoto photo = new SharePhoto.Builder() 
       .setBitmap(image) 
       .build(); 
     SharePhotoContent content = new SharePhotoContent.Builder() 
       .addPhoto(photo) 
       .build(); 
     ShareDialog.show(MainActivity.this, content); 
    } 

回答

0

您可以嘗試從InputStream獲取位圖。使用此,

BitmapFactory.decodeStream(resolver.openInputStream(uri), null, options); 

其中解析器是你ContentResolveruridata.getData();

您不需要查詢數據庫,除非你想檢查任何FileNotFoundException異常返回。

相關問題