0

私のアプリは、ユーザーが写真を撮ってFacebookのウォールにアップロードできるようにすることを目的としています。次のコードは、これとまったく同じ問題に関連する他のSOの質問で与えられた作業コードの他の多くの例と非常に似ていますが、それでもnullポインター例外が発生します。

    private void postOnWall()
    {
        final String response = "";
    try
    {
        Bundle params = new Bundle();
        params.putString("message", getMessage());
        params.putByteArray("picture", byteArray);
        mAsyncRunner.request(me/feed, params, "POST", new SampleUploadListener(),
        null);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }       
}

メッセージの追加に進む前に、画像のアップロードを機能させたいだけです。何か案は?

編集:AsyncRunner(...)行に付随するSampleUploadListener()は次のとおりです。

public class SampleUploadListener extends BaseRequestListener {
    public void onComplete(final String response, final Object state) {
        try {
            // process the response here: (executed in background thread)
            Log.d("Facebook-Example", "Response: " + response.toString());
            JSONObject json = Util.parseJson(response);
            final String src = json.getString("src");

            // then post the processed result back to the UI thread
            // if we do not do this, an runtime exception will be generated
            // e.g. "CalledFromWrongThreadException: Only the original
            // thread that created a view hierarchy can touch its views."

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

    @Override
    public void onFacebookError(FacebookError e, Object state) {
        // TODO Auto-generated method stub

    }
}

LogCat:

06-22 13:23:45.136: W/System.err(20667): java.lang.NullPointerException
06-22 13:23:45.136: W/System.err(20667):    at     com.uncc.cci.TrashPickup.TrashPickupActivity.postwall(TrashPickupActivity.java:475)
06-22 13:23:45.136: W/System.err(20667):    at com.uncc.cci.TrashPickup.TrashPickupActivity$5$1.onClick(TrashPickupActivity.java:230)
06-22 13:23:45.140: W/System.err(20667):    at android.view.View.performClick(View.java:3511)
06-22 13:23:45.140: W/System.err(20667):    at android.view.View$PerformClick.run(View.java:14105)
06-22 13:23:45.140: W/System.err(20667):    at android.os.Handler.handleCallback(Handler.java:605)
06-22 13:23:45.140: W/System.err(20667):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-22 13:23:45.140: W/System.err(20667):    at android.os.Looper.loop(Looper.java:137)
06-22 13:23:45.140: W/System.err(20667):    at android.app.ActivityThread.main(ActivityThread.java:4424)
06-22 13:23:45.144: W/System.err(20667):    at java.lang.reflect.Method.invokeNative(Native Method)
06-22 13:23:45.144: W/System.err(20667):    at java.lang.reflect.Method.invoke(Method.java:511)
06-22 13:23:45.144: W/System.err(20667):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-22 13:23:45.144: W/System.err(20667):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-22 13:23:45.148: W/System.err(20667):    at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

0

する必要があります:

private void postOnWall() {
    Bundle params = new Bundle();            
    params.putString("message", "New picture");
    params.putByteArray("source", byteArray);
    mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null);
}

パスをnullとして送信したため、nullポインター例外が発生した可能性があります。
また、ドキュメントによると、画像パラメータ名はsourceです。


編集

これを試して、mAsyncRunnerがnullかどうかを確認してください。

private void postOnWall() {
    Bundle params = new Bundle();            
    params.putString("message", "New picture");
    params.putByteArray("source", byteArray);
    Log.d("Facebook-Example", mAsyncRunner == null ? "mAsyncRunner is null" : "mAsyncRunner not null");
    mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null);
}

その行にエラーがスローされるので、それが唯一の可能なことのように思われます。

于 2012-06-21T18:28:28.953 に答える
0

ここにあるバグを修正すると、残念ながら、現時点では実際の画像バイトをFacebookに直接アップロードして、壁に画像を投稿することはできません。あなたは彼らの写真ギャラリーに写真をアップロードすることができますが、彼らの壁にはアップロードできません。写真を壁に投稿するには、写真がすでにオンラインに存在している必要があり、他のデータと一緒に写真が置かれている場所へのリンクを提供する必要があります。私が間違っているとしたら、これは非常に新しい開発です。数か月前にこのすべてに遭遇し、Facebookにバグを提出したところ、「バグではなく、意図したとおりです」と拒否されました。

あなたが彼らのギャラリーに写真を入れても大丈夫なら(それがギャラリーの唯一の写真であるなら、それは通常の壁の投稿とほとんど同じように見えます)これはそれを行う方法です: Facebookの壁へのAndroidの投稿写真

于 2012-06-22T20:34:04.220 に答える