在Android上的API LEVEL 10之后,Facebook SDK无效

时间:2012-07-12 15:11:12

标签: android facebook sdk twitter4j linkedin-j

我使用Facebook SDK(以及Twitter,Linkedin)登录我的应用程序。 如果我指定minSdkVersion< 10,它将完美地工作。我需要升级应用程序以使用Fragment ..

<uses-sdk android:minSdkVersion="10" />

对于11及更高版本,应用程序在收到令牌后崩溃了!我需要帮助!看一下错误:

更新

07-12 16:58:44.136: D/AndroidRuntime(18310): Shutting down VM

    07-12 16:58:44.148: E/AndroidRuntime(18310): FATAL EXCEPTION: main
07-12 16:58:44.148: E/AndroidRuntime(18310): java.lang.NullPointerException: println needs a message
07-12 16:58:44.148: E/AndroidRuntime(18310):    at android.util.Log.println_native(Native Method)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at android.util.Log.d(Log.java:138)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at com.branchu1.Login$1$1.onComplete(Login.java:161)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at com.facebook.android.Facebook$1.onComplete(Facebook.java:312)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at com.facebook.android.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:144)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:224)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:324)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at android.os.Looper.loop(Looper.java:137)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at android.app.ActivityThread.main(ActivityThread.java:4424)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at java.lang.reflect.Method.invokeNative(Native Method)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at java.lang.reflect.Method.invoke(Method.java:511)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-12 16:58:44.148: E/AndroidRuntime(18310):    at dalvik.system.NativeStart.main(Native Method)

与Twitter和Linkedin SDK完全相同。如果我从清单中删除字段android:minSdkVersion,它的工作原理。我真的不明白!

谢谢!

2 个答案:

答案 0 :(得分:0)

“@ Rawkode第161行是facebook sdk的一小部分.Log.d(”Facebook“,e.getMessage());看来,Facebook没有发送任何内容,我从这一行收到错误。”

您的问题是e.getMessage()是一个空字符串,当您尝试使用空字符串调用Log.d(TAG,message)时,它将与NPE一起崩溃。我遇到了类似的问题,我花了一段时间来追踪它:

某些错误没有getMessage()方法的任何数据,因为它不是必需的。我的解决方案是创建我自己的方法,其中总是有一些文本,你再也不会从中得到另一个NPE:

private void logIt(String message){
    Log.d(TAG, "Logged: " + message);
}

只需调用它而不是正常的Log.d(),你就不会遇到这个问题,因为总会有数据要记录(在你的情况下,它会说:“Logged:null”)。您也可以修改该方法以接受单个标记,但不是必需的。

答案 1 :(得分:0)

我有同样的错误..该应用程序完美适用于第9版或更低版本,但使用Android 3.0或更高版本无法正常工作。

尝试使用新的facebook的api,它有效..

https://developers.facebook.com/android/

抱歉我的英文!