quick-cocos2d-x 调用友盟(UMeng)的社区分享(Android平台)
按照官方的教程,正确配置环境。
我把那些依赖jar包通过build_path加载到项目中会报错。说sourceType是ClassDefNotFound。
然后直接把libs复制到项目里面,就解决问题了。但是编译的时候没有错,运行时会报这个错,没搞懂。
quick那边模仿luajavabridge、写一段调用代码:
1 local javaClassName = "com.yourclass.name.MainActivity" 2 local javaMethodName = "callUMengSDK" 3 local javaParams = { 4 "params1", 5 "params2", 6 function(event) 7 callbackMethod(event) 8 printf("Java method callback value is [%s]", event) 9 end 10 } 11 local javaMethodSig = "(Ljava/lang/String;Ljava/lang/String;I)V" 12 luaj.callStaticMethod(javaClassName, javaMethodName, javaParams, javaMethodSig)
贴上android客户端的接口:(主要是一个静态的调用方法)
1 public static void callUMengSDK(final String title, final String message, 2 final int luaCallbackFunction) 3 { 4 s_instance.runOnUiThread(new Runnable() { 5 @Override 6 public void run() 7 { 8 //注册监听 9 mController.registerListener(new SnsPostListener() 10 { 11 @Override 12 public void onStart() 13 { 14 Toast.makeText(s_instance, "xxxx分享开始", Toast.LENGTH_SHORT).show(); 15 } 16 17 @Override 18 public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) 19 { 20 if(eCode == 200) 21 { 22 Toast.makeText(s_instance, "yyyy分享成功", Toast.LENGTH_SHORT).show(); 23 s_instance.runOnGLThread(new Runnable() { 24 @Override 25 public void run() { 26 Cocos2dxLuaJavaBridge.callLuaFunctionWithString( 27 luaCallbackFunction, 28 "分享咯~~哇哇哇"); 29 Cocos2dxLuaJavaBridge.releaseLuaFunction(luaCallbackFunction); 30 } 31 }); 32 }else 33 { 34 Toast.makeText(s_instance, "分享失败、你懂得~", Toast.LENGTH_SHORT).show(); 35 s_instance.runOnGLThread(new Runnable() { 36 @Override 37 public void run() { 38 Cocos2dxLuaJavaBridge.callLuaFunctionWithString( 39 luaCallbackFunction, 40 "分享失败~~JJoo"); 41 Cocos2dxLuaJavaBridge.releaseLuaFunction(luaCallbackFunction); 42 } 43 }); 44 } 45 } 46 }); 47 48 49 mController.setShareContent("来自程序猴子的分享~~~"); 50 // mController.setShareMedia(new UMImage(s_instance, 51 // "http://www.umeng.com/images/pic/banner_module_social.png")); 52 mController.setShareMedia(new UMImage(s_instance, new File("/storage/sdcard0/picture_final/pic.jpg"))); 53 mController.openShare(s_instance, false); 54 } 55 }); 56 }
上面的分享,既可以分享网络URL的图片,也可以分享本地的截图图片。
需要注意的是:注册监听的时候、用代码补全功能时,SnsPostListener找不到,我去。。。
结果直接硬着头皮写完,报错也没有了。程序也对了。。。