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找不到,我去。。。

结果直接硬着头皮写完,报错也没有了。程序也对了。。。

原文地址:https://www.cnblogs.com/vokie/p/3678244.html