在没有对话警告的墙上的Android Facebook帖子

时间:2012-03-30 14:41:20

标签: android facebook facebook-graph-api ddms

我按照这个方法发布了facebook状态更新,但没有来自这个答案的对话框: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 个答案:

答案 0 :(得分:2)

非常好。因为忽略了重要的警告,我觉得自己总是白痴....... - (

诀窍是在第69行改变Facebook SDK中的Util.java:

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

为:

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

感谢此处发布的解决方案:https://stackoverflow.com/a/3927541/450534