DeviceUtils.h
//
// DeviceUtils.h
// gamemoom
//
// Created by Song on 14-8-20.
//
//
#ifndef __gamemoom__DeviceUtils__
#define __gamemoom__DeviceUtils__
#include <iostream>
using namespace std;
const char* getModel();
int getSdkVersion();
const char* getOsVersion();
const char* getPhoneNumber();
#endif /* defined(__gamemoom__DeviceUtils__) */
DeviceUtils.mm
Ios端获取设备信息
// // DeviceUtils.m // gamemoom // // Created by Song on 14-8-20. // // #import "DeviceUtils.h" const char* getModel() { NSString *strModel = [[UIDevice currentDevice] model]; return [strModel UTF8String]; } int getSdkVersion() { return 0; } const char* getOsVersion() { NSString *strSysVersion = [[UIDevice currentDevice] systemVersion]; return [strSysVersion UTF8String]; } const char* getPhoneNumber() { return ""; }
DeviceUtils.cpp
Android端获取设备信息
//
// DeviceUtils.cpp
// gamemoom
//
// Created by Song on 14-8-20.
//
//
#include "DeviceUtils.h"
#include <platform/android/jni/JniHelper.h>
USING_NS_CC;
static const char* JAVA_CLASS_NAME = "com/easygo/games/utils/DeviceUtils";
extern "C"
{
static const char* jni_GetStaticMethod_string(const char* className, const char* methodName) {
std::string ret;
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, className, methodName, "()Ljava/lang/String;")) {
jstring retFromJava = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
const char* str = t.env->GetStringUTFChars(retFromJava, 0);
ret = str;
t.env->ReleaseStringUTFChars(retFromJava, str);
t.env->DeleteLocalRef(t.classID);
}
return ret.c_str();
}
static int jni_GetStaticMethod_int(const char* className, const char* methodName) {
int ret = 0;
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, className, methodName, "()I")) {
ret = t.env->CallStaticIntMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
}
return ret;
}
}
const char* getModel() {
return jni_GetStaticMethod_string(JAVA_CLASS_NAME, "getModel");
}
int getSdkVersion() {
return jni_GetStaticMethod_int(JAVA_CLASS_NAME, "getSdkVersion");
}
const char* getOsVersion() {
return jni_GetStaticMethod_string(JAVA_CLASS_NAME, "getOsVersion");
}
const char* getPhoneNumber() {
return jni_GetStaticMethod_string(JAVA_CLASS_NAME, "getPhoneNumber");
}
DeviceUtils.java
Android端的具体实现
package com.easygo.games.utils;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.telephony.TelephonyManager;
/**
* Device Utils
* Created by song on 14-8-20.
*/
public class DeviceUtils {
public static Context context;
public static String getModel() {
return Build.MODEL;
}
public static String getPhoneNumber() {
TelephonyManager phoneMgr = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
return phoneMgr.getLine1Number();
}
public static int getSdkVersion() {
return Build.VERSION.SDK_INT;
}
public static String getOsVersion() {
return Build.VERSION.RELEASE;
}
public static String getPackageVersionName() {
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
if (null != packageInfo) {
return packageInfo.versionName;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return "";
}
}
Android获取本机号码,需要在AndroidManifest.xml中添加权限:
<uses-permission android:name=”android.permission.READ_PHONE_STATE” />
参考链接: