cocos2d-x 使用JniHelper 调用 java代码 获取安卓生成的唯一标示UUID

原创 2013年12月05日 10:51:46

以前写过一次,但是最近在做cocos2d-x通过jni调用java代码的东西,然后又忘了,所以写一下备注一下

cocos2d-x版本:2.2.1

代码:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#include <android/log.h>
#endif

引入头文件,在win32下是代码是无效的,所以加个判断。


源文件:

std::string GameUtil::getUUID()
{
	std::string str;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
	JniMethodInfo minfo;//定义Jni函数信息结构体
	
	bool isHave = JniHelper::getStaticMethodInfo(minfo,
		"com/test/hello/hello", //类的路径。最后一个hello是java文件名,但是不需要加入文件名后缀
		"getUUID", //方法名
		"()Ljava/lang/String;"); //括号里的是参数,后面的是返回值。
	jstring jstr;
 if (isHave) {
		//CallStaticObjectMethod是返回一个jobject格式的函数
		//还知道一个函数式CallStaticIntMethod
 jstr = (jstring)(minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID));
		str = JniHelper::jstring2string(jstr);
		minfo.env->DeleteLocalRef(minfo.classID);
		minfo.env->DeleteLocalRef(jstr);
	}
	CCLOG("UUID is :%s",str.c_str());
#endif
	return str;
}

这段代码是获取java代码内的提供的UUID
详细参数就不多写了,Himi有文章写的很详细
链接:http://blog.csdn.net/xiaominghimi/article/details/7602984
具体功能是:
1.JniHelper::getStaticMethodInfo,获取是否查询到了类函数,返回一个bool
2.使用CallStaticObjectMethod函数获取getUUID的返回值
3.JniHelper::jstring2string使用该函数把 jstring 转换成 std::string
4.使用完以后释放对象DeleteLocalRef()
唯一区别就是,新版本需要把java文件也写上,以前是只用写一个路径,不用写文件名,不然调用的时候程序会崩溃,提示找不到文件


java代码:

    public static String getUUID()
    {
    	Log.e("getUUID:",java.util.UUID.randomUUID().toString());
    	return java.util.UUID.randomUUID().toString();
    }

这是一个静态函数,记住c++和java的string是有大小写的区别的,java是大写,c++是小写

【总结】Cocos2d-x实用方法整理

本篇整理学习过程中用到的一些小技巧,以便之后使用,后续不断补充。
  • ldpjay
  • ldpjay
  • 2015年07月21日 15:04
  • 2159

通过NDK获得UUID

  • 2015年09月25日 15:50
  • 1.16MB
  • 下载

iOS 查看项目中牵涉到IDFA的文件

使用终端     cd到对应项目根目录中   然后使用  grep -r advertisingIdentifier . 便可得到结果...
  • cl123cpzaihu
  • cl123cpzaihu
  • 2016年05月17日 15:18
  • 246

iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?

[摘要:1、UDID (Unique Device Identifier) UDID的齐称是Unique Device Identifier,望文生义,它便是苹果IOS装备的独一辨认码,它由40个字符...
  • raoshihong
  • raoshihong
  • 2016年01月29日 14:52
  • 1987

Android生成唯一标识符UUID

在这次新版本的app开发中,其中增加了游客账号访问,但需要为该游客生成一个唯一标识符identity,最初考虑通过mac地址或者imei来唯一标识,但是后面有一项需求,游客账号可以升级,升级之后退出重...
  • wd40296
  • wd40296
  • 2013年12月04日 14:00
  • 17079

JAVA代码获取UUID

2.UUID工具类 import java.util.UUID; public class UUIDGenerator { public UUIDGenerator() { } publ...
  • wsadzxcleg
  • wsadzxcleg
  • 2016年01月21日 11:25
  • 750

iOS9 获取手机的唯一标识(一)——CFUUID、NSUUID、IDFA、IDFV、UDID、OpenUDID 的区别

在2013年3月21日苹果已经通知开发者,从2013年5月1日起,访问UIDID的应用将不再能通过审核,替代的方案是开发者应该使用“在iOS 6中介绍的Vendor或Advertising标示符”。...
  • chy555chy
  • chy555chy
  • 2016年06月10日 17:55
  • 9559

iOS 获取设备信息

IOS获取设备信息 1、获得设备名称 2、获取设备型号 3、获取IOS系统名称 4、获取IOS系统版本号 5、获取设备唯一标识 6、获取设备电池电量信息 7、获取设备运营商信息 8、获取设备网络状态...
  • chy555chy
  • chy555chy
  • 2016年06月11日 17:04
  • 1690

cocos2d-x中有一个JniHelper类详细使用

主体思路 通过JNI获取java虚拟机,再获取当前程序的JNI环境,通过JNI环境获取需要调用的java类信息,再获取需要调用的java类中的函数信息。再通过JNI环境调用,使用类信息、函数信息...
  • luxiaoyu_sdc
  • luxiaoyu_sdc
  • 2013年11月13日 18:58
  • 26240

JniHelper详细说明

1.Jni的介绍 先简单介绍一下,Jni简称(Java Native Interface)Java原生接口,在Java里面用Native修饰的方法由另外一种语言实现的本地方法,意思就是说,这个用nat...
  • u013517637
  • u013517637
  • 2016年12月28日 11:14
  • 1525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x 使用JniHelper 调用 java代码 获取安卓生成的唯一标示UUID
举报原因:
原因补充:

(最多只允许输入30个字)