2012-05-09 3 views
2

친구의 벽에 사진을 게시 할 수 있습니까? 이 코드 사용하고 있습니다 :친구의 벽에 사진을 게시 하시겠습니까?

Bundle postdata = new Bundle(); 
postdata.putString("message", msg); 
postdata.putByteArray("picture", pic); 
// this code, i found it in another questions but it doesn't 
// seem to help much: 
postdata.putString("target_id", usr); 
// then i use the Asynchronous request. 
mAsyncRunner.request(usr+"/feed", postdata, "POST",new WallRequestListener(), null); 
pic가 BYTEARRAY으로 그림입니다

하고 usr는 친구의 ID입니다. 친구의 벽에는 메시지가 표시되지만 사진은 전혀 표시되지 않습니다.

답변

0

documentation에 따르면 사진의 매개 변수의 이름은 "그림"하지만 "소스" 없습니다.

그래서 코드는 다음과 같아야합니다

Bundle postdata = new Bundle(); 

postdata.putString("message", msg); 
postdata.putByteArray("source", pic); 

mAsyncRunner.request(usr + "/feed", postdata, "POST", new WallRequestListener(), null); 
+0

더 이상 작동하지 않는 것처럼 보입니다. 동일한 결과가 나타납니다. – Slacker616

+0

잠깐, 사용자 피드에 게시하려고하고 있습니다. 경로는 그림을 기대하지 않습니다. [문서] (http://developers.facebook.com/docs/reference/api/user/#posts)를 확인하면 "그림"매개 변수가 문자열임을 알 수 있습니다. 너 뭐하려고? 사진을 벽 사진에 게시 하시겠습니까? –

+0

예 실제로 "picture"매개 변수가있는 첫 번째 코드를 사용하여 사진을 사용자의 벽에 업로드하지만 벽 앨범 ID를 얻는 것은 가능하지만 지금은 사용자의 친구 벽에 그림을 게시하고 싶습니다. – Slacker616

1

이것은 내가 내 응용 프로그램에서 사용하는 것입니다. 그리고 그것은 작동합니다.

protected void uploadPhoto() { 
    if (!Utility.mFacebook.isSessionValid()) { 
     Util.showAlert(this, "Warning", "You must first log in."); 
    } else { 
     if (targetUri != null) { 
      Bundle params = new Bundle(); 
      try { 
       params.putByteArray("photo", Utility.scaleImage(getApplicationContext(), targetUri)); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      params.putString("caption", txtPhotoCaption.getText().toString()); 
      Utility.mAsyncRunner.request("replace this with the users ID"+ "/photos&access_token=" + Utility.mFacebook.getAccessToken(), 
        params, "POST", new PhotoUploadListener(), null); 
      txtPhotoCaption.setText(""); 
      Toast.makeText(getApplicationContext(), "Photo uploaded successfully", Toast.LENGTH_SHORT).show(); 
      this.finish(); 
     } 
    } 
} 

샘플 앱에서 사용한 것과 동일한 방법을 사용하고 있습니다. 이미지의 크기를 조정하거나 축소하지 않는 것이 좋습니다. "캡션"특성이 EditText에서 가져 오는 중입니다. 실제 이미지는 "targetUri"필드에 있으며 전역 변수로 선언되어 있습니다. 기기의 기본 갤러리를 사용하여 이미지를 불러옵니다. 완전을 기하기 위해 기본 갤러리 앱에서 이미지를 가져 오는 코드입니다.

btnAddPhoto.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(intent, 0); 
      } 
     }); 

(이 앱을 선택하라는 메시지) 그리고 그것은 여기 onActivityResult()에서 처리 : 나는 또한에 미리보기로 이미지 뷰에서 선택한 이미지를 설정하고 :

참고 내가 대답 여기에 코드를 게시하기 전에 사용자

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

     Bitmap bitmap = null; 
     if (resultCode == RESULT_OK) { 
      targetUri = data.getData(); 
      Log.e("IMG URI", targetUri.toString()); 
      try { 
       bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri)); 
       try { 
        Utility.scaleImage(getApplicationContext(), targetUri); 
        imgDisplaySelectedImage.setImageBitmap(bitmap); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

로그인 나는 다시 친구 벽에 업로드를 테스트했습니다. 그리고 그것은 정말로 효과적입니다. 희망이 당신을 도울 수 있습니다.

편집 : onActivityResult를 아래의 미리보기 이미지 표시 좋은 재생되지 않았다 Intent.ACTION_GET_CONTENT를 사용하여 최신 코멘트에서 언급 한 바와 같이

(). 약간 수정 된 코드 수정.

이상한 점은 "Complete action using"팝업 창에서 Astro File Manager 나 갤러리를 내 Galaxy S에서 가져 오지 못했다는 것입니다. 파일 관리자를 제공합니다 (시장에서 벗어나 재고가 아님).) 및 Quickoffice Pro. 즉, 둘 중 하나의 선택과 사진은 여전히 ​​업로드됩니다.

+0

감사, 나는 그것을 밖으로 시도하고 알려 드리겠습니다. – Slacker616

+0

그래. 위의 코드에서 올바른 부분을 가져 가면 좋을 것입니다. –

+0

대단히 고마워요. 이 줄을 변경하면됩니다 : "usrID/photos & access_token =" "usrID/feed"를 사용하고있었습니다. – Slacker616

관련 문제