2012-05-09 15 views
2

友達の壁に画像を投稿することはできますか? 私はこのコードを使用しています:友達の壁に画像を投稿しますか?

BYTEARRAYと usrは友人のIDであるよう picが絵である
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); 

を。 友だちの壁にはメッセージが表示されますが、画像はまったく表示されません。

答えて

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

待って、ユーザーのフィードに投稿しようとしていますが、そのパスは画像を期待していません。 [the docs。](http://developers.facebook.com/docs/reference/api/user/#posts)をチェックすると、 "picture"パラメータが文字列であることがわかります。あなたは何をしようとしているのですか?写真を壁の写真に投稿しますか? –

+0

ええ、私は実際には、ユーザーの壁に画像をアップロードするために "画像"パラメータで最初のコードを使用しますが、私は壁のアルバム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(); 
     } 
    } 
} 

サンプルアプリケーションで使用しているのと同じ方法を使用しています。スケーリングの長所や短所に陥ることなく、画像を拡大縮小しないでください。 "caption"属性が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()に処理されます。私もにプレビューとしてImageViewの中で選択した画像を設定しています

NOTE私は答えとしてここにコードを投稿する前に、ユーザー

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(); 
      } 
     } 
    } 

にログインし、私は再び友人の壁にアップロードをテストしています。そしてそれは本当にうまくいく。これがあなたにも役立つことを願っています。

EDIT:

Intent.ACTION_GET_CONTENTがonActivityResult()下のプレビュー画像表示と仲良くしていない使用して、最新のコメントで述べたように。少し修正したコードを修正しました。

私が奇妙なのは、 "Complete action using"ポップアップで、私は銀河のSにアストロファイルマネージャーもギャラリーも手に入れていないという事実です。それは私にファイルマネージャーを提供します)とQuickoffice Pro。それは言われている、2つの選択と写真はまだアップロードされています。

+0

ありがとう、私はそれを試し、あなたに知らせるでしょう。 – Slacker616

+0

確かです。上のコードから正しい部分を取ってください。それは良いはずです。 –

+0

ありがとうございます。私はこの行を変更するだけでした: "usrID/photos&access_token =" "usrID/feed"を使用していました。 – Slacker616

関連する問題