ICS及以上版本的android系统不允许在主UI线程上进行网络操作[称为Strict Mode],因此当不正确地使用了人人SDK后,获得session-key的过程中会出现错误(显示为黄色的warning),实际上就是操作被阻止了。
有三个解决办法:
1.不用UI线程调用webview框,登陆返回时便不会出错
2.野办法:关闭strict mode
1 2 3 4 5 6 7 8 9 10 11 |
//Stop strict mode checking try { Class strictModeClass=Class.forName("android.os.StrictMode"); Class strictModeThreadPolicyClass=Class.forName("android.os.StrictMode$ThreadPolicy"); Object laxPolicy = strictModeThreadPolicyClass.getField("LAX").get(null); Method method_setThreadPolicy = strictModeClass.getMethod( "setThreadPolicy", strictModeThreadPolicyClass ); method_setThreadPolicy.invoke(null,laxPolicy); } catch (Exception e) { Log.d("Strict Mode","Error blocking strict mode."); } |
3.自己重写oauth处理,不用sdk
4.参考这篇文章(20130806补充)
补充一句,国内对于人人API的文章不是很多,大部分是复制粘贴,可以考虑google一下facebook的API,因为人人就是模仿facebook来做的;微博可以参考twitter
上面的这个解决办法就是从stackoverflow上关于facebook的一个帖子里找到的(但是当时忘记收藏网址了www
官方文档:StrictMode
非常感谢!解决了我正遇到的问题