2

私は現在、4.0 Ice-Cream Sandwich の Android アプリケーション ターゲット ビルドを開発しています。

これまでのところ、次のコードを使用して通常のテキストを Facebook に投稿できます。

public void postToWall() {

      // post on user's wall.

        facebook.dialog(this, "feed", new DialogListener() {

    @Override
    public void onFacebookError(FacebookError e) {
    }

    @Override
    public void onError(DialogError e) {
    }

    @Override
    public void onComplete(Bundle values) {
    }

    @Override
    public void onCancel() {
    }
        });

}

ただし、キャプション付きの写真を Facebook に投稿できません。私はオンラインで検索しましたが、見つけたコードの1つは次のとおりです。

public void postToWall() {
        // post on user's wall.
        byte[] data = null;

        Bitmap bi = BitmapFactory.decodeFile(photoToPost);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        data = baos.toByteArray();

        Bundle params = new Bundle();
        params.putString("method", "photos.upload");
        params.putByteArray("picture", data);

        AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
        mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);

    }

問題は、何がわからないため、上記のコードが機能しないことです。

1.写真投稿

2. mAsyncRunner .request は、無効な引数であるため「null」を入力できないというエラーを表示し続けます

3. SampleUploadListenerは、おそらく FacebookSDK からのものであり、同様に機能していません (クラスを作成するためにエラーが発生し続けます)

ここにもっと簡単なコードはありますか?または、誰かが私が経験しているエラーを説明してもらえますか?

これまでのところ、通常のテキストをFacebookに投稿するために「クリック時」を使用しており、この方法を指しています。私の目標は、キャプション付きの写真を Facebook にアップロードすることです。

助けてくれてありがとう!

4

5 に答える 5

0

このリンクを参照してください。これは、壁にテキストを投稿する方法として、FaceBook ウォールに画像を投稿する方法を示しています。

学ぶのは良いことです。

于 2012-11-28T08:23:19.390 に答える
0
public class CardShared extends Activity{

public static final String APP_ID = "YOUR APP ID";
private Facebook mFacebook;
private AsyncFacebookRunner mAsyncRunner ;
boolean isLoggedIn = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   // setContentView(R.layout.main);
    mFacebook = new Facebook(APP_ID);
    mAsyncRunner = new AsyncFacebookRunner(mFacebook);

    //Implementing SSO
    mFacebook.authorize(this, new String[]{"publish_stream"}, new DialogListener(){

        public void onComplete(Bundle values) {

            sharePicture(values.getString(Facebook.TOKEN));
            Toast.makeText(getApplicationContext(), "Picture Shared Successfully", Toast.LENGTH_SHORT).show();
            CardShared.this.finish();
        }


        public void onFacebookError(FacebookError e) {
            Log.d("FACEBOOK ERROR","FB ERROR. MSG: "+e.getMessage()+", CAUSE: "+e.getCause());
        }


        public void onError(DialogError e) {
            Log.e("ERROR","AUTH ERROR. MSG: "+e.getMessage()+", CAUSE: "+e.getCause());
        }


        public void onCancel() {
            Log.d("CANCELLED","AUTH CANCELLED");
        }
    });
}

//updating Status
public void sharePicture(String accessToken){

    byte[] data = null;
    try {
        Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.image_to_be_uploaded);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        data = baos.toByteArray();

        Bundle params = new Bundle();
        params.putString("method", "photos.upload");
        params
                .putString(Facebook.TOKEN, mFacebook
                        .getAccessToken());
        params.putByteArray("picture", data);
        mAsyncRunner.request(null, params, "POST",
                new SampleUploadListener(), null);

    } catch (Exception e) {
        e.printStackTrace();
    }

}

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

    Log.d("onActivityResult","onActivityResult");
    mFacebook.authorizeCallback(requestCode, resultCode, data);
}
public class SampleUploadListener extends BaseRequestListener {

    public void onComplete(final String response, final Object state) {
        try {

            Log.d("Facebook-Example", "Response: " + response.toString());
            JSONObject json = Util.parseJson(response);
            final String f = json.getString("src");

        } catch (JSONException e) {
            Log.w("Facebook-Example", "JSON Error in response");
        } catch (FacebookError e) {
            Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());
        }
    }
}

}

于 2012-11-28T10:45:50.380 に答える
0

このように置く

mAsyncRunner.request("me/feed", params, "POST", new SampleUploadListener())
于 2013-02-11T13:40:55.460 に答える
0

1-これは壁に送信されるあなたの写真です。SDカードまたは他の場所の画像にすることができます

2-これはFacebook SDKのクラスで、facebookオブジェクトを受け入れます(以前に作成したもの)

3-これも Facebook SDK のクラスです

Facebook SDK に問題があるようです。[プロジェクト] >> [プロパティ] >> [Android] を右クリックして再度設定し、ライブラリが存在するかどうかを確認してください。

于 2012-11-28T08:29:08.143 に答える
0

問題は次の行にあります

mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);

グラフ パスとして null を渡しています。これは次のようになります = "me/feed"

このコード行を更新してください

mAsyncRunner.request("me/feed", params, "POST", new SampleUploadListener(), null); 

それならうまくいくはずです。

于 2012-11-28T09:31:09.853 に答える