Android Facebook пост на стене без диалоговых предупреждений - PullRequest
1 голос
/ 30 марта 2012

Я использовал этот метод, чтобы публиковать обновления статуса Facebook без их диалогового окна из этого ответа на SO: https://stackoverflow.com/a/7528388/450534

Я могу публиковать обновления статуса из активности приложений, но он по-прежнему генерирует предупреждения.

Это очень длинный список предупреждений от DDMS.Любой совет по устранению проблемы приветствуется.

Код:

protected void postToWall(String message) {

        if (!Utility.mFacebook.isSessionValid()) {
            Util.showAlert(this, "Warning", "You must first log in.");
        }

        Log.d("Tests", "Testing graph API wall post");
        try {
            String response = Utility.mFacebook.request("me");
            Bundle parameters = new Bundle();
            parameters.putString("message", txtPostToWall.getText().toString());
//          parameters.putString("description", getString(R.string.app_desc));

            response = Utility.mFacebook.request("me/feed", parameters, "POST");
            txtPostToWall.setText("");
            this.finish();

            Log.d("Tests", "got response: " + response);

            if (response == null || response.equals("") ||  response.equals("false"))   {
                Log.v("Error", "Blank response");
            }
        }
        catch(Exception e)  {
            e.printStackTrace();
        }
    }

Предупреждения DDMS: (Очень очень длинный.)

03-30 20:02:53.290: W/Bundle(17941): Key message expected byte[] but value was a java.lang.String.  The default value <null> was returned.
    03-30 20:02:53.306: W/Bundle(17941): Attempt to cast generated internal exception:
    03-30 20:02:53.306: W/Bundle(17941): java.lang.ClassCastException: java.lang.String
    03-30 20:02:53.306: W/Bundle(17941):    at android.os.Bundle.getByteArray(Bundle.java:1305)
    03-30 20:02:53.306: W/Bundle(17941):    at com.facebook.android.Util.openUrl(Util.java:161)
    03-30 20:02:53.306: W/Bundle(17941):    at com.facebook.android.Facebook.request(Facebook.java:751)
    03-30 20:02:53.306: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate.postToWall(StatusUpdate.java:68)
    03-30 20:02:53.306: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate$2.onClick(StatusUpdate.java:48)
    03-30 20:02:53.306: W/Bundle(17941):    at android.view.View.performClick(View.java:2538)
    03-30 20:02:53.306: W/Bundle(17941):    at android.view.View$PerformClick.run(View.java:9152)
    03-30 20:02:53.306: W/Bundle(17941):    at android.os.Handler.handleCallback(Handler.java:587)
    03-30 20:02:53.306: W/Bundle(17941):    at android.os.Handler.dispatchMessage(Handler.java:92)
    03-30 20:02:53.306: W/Bundle(17941):    at android.os.Looper.loop(Looper.java:130)
    03-30 20:02:53.306: W/Bundle(17941):    at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-30 20:02:53.306: W/Bundle(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
    03-30 20:02:53.306: W/Bundle(17941):    at java.lang.reflect.Method.invoke(Method.java:507)
    03-30 20:02:53.306: W/Bundle(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    03-30 20:02:53.306: W/Bundle(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    03-30 20:02:53.306: W/Bundle(17941):    at dalvik.system.NativeStart.main(Native Method)
    03-30 20:02:53.310: W/Bundle(17941): Key access_token expected byte[] but value was a java.lang.String.  The default value <null> was returned.
    03-30 20:02:53.325: W/Bundle(17941): Attempt to cast generated internal exception:
    03-30 20:02:53.325: W/Bundle(17941): java.lang.ClassCastException: java.lang.String
    03-30 20:02:53.325: W/Bundle(17941):    at android.os.Bundle.getByteArray(Bundle.java:1305)
    03-30 20:02:53.325: W/Bundle(17941):    at com.facebook.android.Util.openUrl(Util.java:161)
    03-30 20:02:53.325: W/Bundle(17941):    at com.facebook.android.Facebook.request(Facebook.java:751)
    03-30 20:02:53.325: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate.postToWall(StatusUpdate.java:68)
    03-30 20:02:53.325: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate$2.onClick(StatusUpdate.java:48)
    03-30 20:02:53.325: W/Bundle(17941):    at android.view.View.performClick(View.java:2538)
    03-30 20:02:53.325: W/Bundle(17941):    at android.view.View$PerformClick.run(View.java:9152)
    03-30 20:02:53.325: W/Bundle(17941):    at android.os.Handler.handleCallback(Handler.java:587)
    03-30 20:02:53.325: W/Bundle(17941):    at android.os.Handler.dispatchMessage(Handler.java:92)
    03-30 20:02:53.325: W/Bundle(17941):    at android.os.Looper.loop(Looper.java:130)
    03-30 20:02:53.325: W/Bundle(17941):    at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-30 20:02:53.325: W/Bundle(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
    03-30 20:02:53.325: W/Bundle(17941):    at java.lang.reflect.Method.invoke(Method.java:507)
    03-30 20:02:53.325: W/Bundle(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    03-30 20:02:53.325: W/Bundle(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    03-30 20:02:53.325: W/Bundle(17941):    at dalvik.system.NativeStart.main(Native Method)
    03-30 20:02:53.325: W/Bundle(17941): Key format expected byte[] but value was a java.lang.String.  The default value <null> was returned.
    03-30 20:02:53.341: W/Bundle(17941): Attempt to cast generated internal exception:
    03-30 20:02:53.341: W/Bundle(17941): java.lang.ClassCastException: java.lang.String
    03-30 20:02:53.341: W/Bundle(17941):    at android.os.Bundle.getByteArray(Bundle.java:1305)
    03-30 20:02:53.341: W/Bundle(17941):    at com.facebook.android.Util.openUrl(Util.java:161)
    03-30 20:02:53.341: W/Bundle(17941):    at com.facebook.android.Facebook.request(Facebook.java:751)
    03-30 20:02:53.341: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate.postToWall(StatusUpdate.java:68)
    03-30 20:02:53.341: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate$2.onClick(StatusUpdate.java:48)
    03-30 20:02:53.341: W/Bundle(17941):    at android.view.View.performClick(View.java:2538)
    03-30 20:02:53.341: W/Bundle(17941):    at android.view.View$PerformClick.run(View.java:9152)
    03-30 20:02:53.341: W/Bundle(17941):    at android.os.Handler.handleCallback(Handler.java:587)
    03-30 20:02:53.341: W/Bundle(17941):    at android.os.Handler.dispatchMessage(Handler.java:92)
    03-30 20:02:53.341: W/Bundle(17941):    at android.os.Looper.loop(Looper.java:130)
    03-30 20:02:53.341: W/Bundle(17941):    at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-30 20:02:53.341: W/Bundle(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
    03-30 20:02:53.341: W/Bundle(17941):    at java.lang.reflect.Method.invoke(Method.java:507)
    03-30 20:02:53.341: W/Bundle(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    03-30 20:02:53.341: W/Bundle(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    03-30 20:02:53.341: W/Bundle(17941):    at dalvik.system.NativeStart.main(Native Method)
    03-30 20:02:53.353: W/Bundle(17941): Key message expected byte[] but value was a java.lang.String.  The default value <null> was returned.
    03-30 20:02:53.368: W/Bundle(17941): Attempt to cast generated internal exception:
    03-30 20:02:53.368: W/Bundle(17941): java.lang.ClassCastException: java.lang.String
    03-30 20:02:53.368: W/Bundle(17941):    at android.os.Bundle.getByteArray(Bundle.java:1305)
    03-30 20:02:53.368: W/Bundle(17941):    at com.facebook.android.Util.encodePostBody(Util.java:69)
    03-30 20:02:53.368: W/Bundle(17941):    at com.facebook.android.Util.openUrl(Util.java:188)
    03-30 20:02:53.368: W/Bundle(17941):    at com.facebook.android.Facebook.request(Facebook.java:751)
    03-30 20:02:53.368: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate.postToWall(StatusUpdate.java:68)
    03-30 20:02:53.368: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate$2.onClick(StatusUpdate.java:48)
    03-30 20:02:53.368: W/Bundle(17941):    at android.view.View.performClick(View.java:2538)
    03-30 20:02:53.368: W/Bundle(17941):    at android.view.View$PerformClick.run(View.java:9152)
    03-30 20:02:53.368: W/Bundle(17941):    at android.os.Handler.handleCallback(Handler.java:587)
    03-30 20:02:53.368: W/Bundle(17941):    at android.os.Handler.dispatchMessage(Handler.java:92)
    03-30 20:02:53.368: W/Bundle(17941):    at android.os.Looper.loop(Looper.java:130)
    03-30 20:02:53.368: W/Bundle(17941):    at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-30 20:02:53.368: W/Bundle(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
    03-30 20:02:53.368: W/Bundle(17941):    at java.lang.reflect.Method.invoke(Method.java:507)
    03-30 20:02:53.368: W/Bundle(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    03-30 20:02:53.368: W/Bundle(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    03-30 20:02:53.368: W/Bundle(17941):    at dalvik.system.NativeStart.main(Native Method)
    03-30 20:02:53.368: W/Bundle(17941): Key method expected byte[] but value was a java.lang.String.  The default value <null> was returned.
    03-30 20:02:53.384: W/Bundle(17941): Attempt to cast generated internal exception:
    03-30 20:02:53.384: W/Bundle(17941): java.lang.ClassCastException: java.lang.String
    03-30 20:02:53.384: W/Bundle(17941):    at android.os.Bundle.getByteArray(Bundle.java:1305)
    03-30 20:02:53.384: W/Bundle(17941):    at com.facebook.android.Util.encodePostBody(Util.java:69)
    03-30 20:02:53.384: W/Bundle(17941):    at com.facebook.android.Util.openUrl(Util.java:188)
    03-30 20:02:53.384: W/Bundle(17941):    at com.facebook.android.Facebook.request(Facebook.java:751)
    03-30 20:02:53.384: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate.postToWall(StatusUpdate.java:68)
    03-30 20:02:53.384: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate$2.onClick(StatusUpdate.java:48)
    03-30 20:02:53.384: W/Bundle(17941):    at android.view.View.performClick(View.java:2538)
    03-30 20:02:53.384: W/Bundle(17941):    at android.view.View$PerformClick.run(View.java:9152)
    03-30 20:02:53.384: W/Bundle(17941):    at android.os.Handler.handleCallback(Handler.java:587)
    03-30 20:02:53.384: W/Bundle(17941):    at android.os.Handler.dispatchMessage(Handler.java:92)
    03-30 20:02:53.384: W/Bundle(17941):    at android.os.Looper.loop(Looper.java:130)
    03-30 20:02:53.384: W/Bundle(17941):    at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-30 20:02:53.384: W/Bundle(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
    03-30 20:02:53.384: W/Bundle(17941):    at java.lang.reflect.Method.invoke(Method.java:507)
    03-30 20:02:53.384: W/Bundle(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    03-30 20:02:53.384: W/Bundle(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    03-30 20:02:53.384: W/Bundle(17941):    at dalvik.system.NativeStart.main(Native Method)
    03-30 20:02:53.388: W/Bundle(17941): Key access_token expected byte[] but value was a java.lang.String.  The default value <null> was returned.
    03-30 20:02:53.403: W/Bundle(17941): Attempt to cast generated internal exception:
    03-30 20:02:53.403: W/Bundle(17941): java.lang.ClassCastException: java.lang.String
    03-30 20:02:53.403: W/Bundle(17941):    at android.os.Bundle.getByteArray(Bundle.java:1305)
    03-30 20:02:53.403: W/Bundle(17941):    at com.facebook.android.Util.encodePostBody(Util.java:69)
    03-30 20:02:53.403: W/Bundle(17941):    at com.facebook.android.Util.openUrl(Util.java:188)
    03-30 20:02:53.403: W/Bundle(17941):    at com.facebook.android.Facebook.request(Facebook.java:751)
    03-30 20:02:53.403: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate.postToWall(StatusUpdate.java:68)
    03-30 20:02:53.403: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate$2.onClick(StatusUpdate.java:48)
    03-30 20:02:53.403: W/Bundle(17941):    at android.view.View.performClick(View.java:2538)
    03-30 20:02:53.403: W/Bundle(17941):    at android.view.View$PerformClick.run(View.java:9152)
    03-30 20:02:53.403: W/Bundle(17941):    at android.os.Handler.handleCallback(Handler.java:587)
    03-30 20:02:53.403: W/Bundle(17941):    at android.os.Handler.dispatchMessage(Handler.java:92)
    03-30 20:02:53.403: W/Bundle(17941):    at android.os.Looper.loop(Looper.java:130)
    03-30 20:02:53.403: W/Bundle(17941):    at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-30 20:02:53.403: W/Bundle(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
    03-30 20:02:53.403: W/Bundle(17941):    at java.lang.reflect.Method.invoke(Method.java:507)
    03-30 20:02:53.403: W/Bundle(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    03-30 20:02:53.403: W/Bundle(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    03-30 20:02:53.403: W/Bundle(17941):    at dalvik.system.NativeStart.main(Native Method)
    03-30 20:02:53.403: W/Bundle(17941): Key format expected byte[] but value was a java.lang.String.  The default value <null> was returned.
    03-30 20:02:53.423: W/Bundle(17941): Attempt to cast generated internal exception:
    03-30 20:02:53.423: W/Bundle(17941): java.lang.ClassCastException: java.lang.String
    03-30 20:02:53.423: W/Bundle(17941):    at android.os.Bundle.getByteArray(Bundle.java:1305)
    03-30 20:02:53.423: W/Bundle(17941):    at com.facebook.android.Util.encodePostBody(Util.java:69)
    03-30 20:02:53.423: W/Bundle(17941):    at com.facebook.android.Util.openUrl(Util.java:188)
    03-30 20:02:53.423: W/Bundle(17941):    at com.facebook.android.Facebook.request(Facebook.java:751)
    03-30 20:02:53.423: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate.postToWall(StatusUpdate.java:68)
    03-30 20:02:53.423: W/Bundle(17941):    at com.dzinesunlimited.sociallyyou.StatusUpdate$2.onClick(StatusUpdate.java:48)
    03-30 20:02:53.423: W/Bundle(17941):    at android.view.View.performClick(View.java:2538)
    03-30 20:02:53.423: W/Bundle(17941):    at android.view.View$PerformClick.run(View.java:9152)
    03-30 20:02:53.423: W/Bundle(17941):    at android.os.Handler.handleCallback(Handler.java:587)
    03-30 20:02:53.423: W/Bundle(17941):    at android.os.Handler.dispatchMessage(Handler.java:92)
    03-30 20:02:53.423: W/Bundle(17941):    at android.os.Looper.loop(Looper.java:130)
    03-30 20:02:53.423: W/Bundle(17941):    at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-30 20:02:53.423: W/Bundle(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
    03-30 20:02:53.423: W/Bundle(17941):    at java.lang.reflect.Method.invoke(Method.java:507)
    03-30 20:02:53.423: W/Bundle(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    03-30 20:02:53.423: W/Bundle(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    03-30 20:02:53.423: W/Bundle(17941):    at dalvik.system.NativeStart.main(Native Method)

Любая помощь действительнооценили.

1 Ответ

2 голосов
/ 30 марта 2012

Ну, хорошо, хорошо. Я чувствую себя полным идиотом за то, что проигнорировал важные предупреждения .....: - (

Хитрость заключалась в том, чтобы изменить Util.java в SDK Facebook в строке 69 с:

if (parameters.getByteArray(key) != null) {

до:

if (parameters.get(key) instanceof byte[]) {

Благодаря решению, опубликованному здесь: https://stackoverflow.com/a/3927541/450534

...