NDK 获取android的imei和serial number

本文介绍了两种在Android设备上获取设备标识的方法:一种是通过TelephonyManager获取IMEI,另一种是通过系统属性获取Serial Number。这两种方法对于实现设备唯一标识的应用场景非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,获取imei

int setAndroidDeviceID(JNIEnv *env, jobject obj,jobject mContext)
{
  if(mContext == 0){
       return -1;
	}
    jclass cls_context = (*env)->FindClass(env, "android/content/Context");
	if(cls_context == 0){
       return -1;
	}
    jmethodID getSystemService = (*env)->GetMethodID(env, cls_context, "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;");
	if(getSystemService == 0){
       return -1;
	}
    jfieldID TELEPHONY_SERVICE = (*env)->GetStaticFieldID(env, cls_context, "TELEPHONY_SERVICE", "Ljava/lang/String;");
	if(TELEPHONY_SERVICE == 0){
       return -1;
	}
    jstring str = (*env)->GetStaticObjectField(env, cls_context, TELEPHONY_SERVICE);
    jobject telephonymanager = (*env)->CallObjectMethod(env, mContext, getSystemService, str);
	if(telephonymanager == 0){
       return -1;
	}
    jclass cls_tm = (*env)->FindClass(env, "android/telephony/TelephonyManager");
	if(cls_tm == 0){
       return -1;
	}
    jmethodID getDeviceId = (*env)->GetMethodID(env, cls_tm, "getDeviceId", "()Ljava/lang/String;");
	if(getDeviceId == 0){
       return -1;
	}
    jstring deviceid = (*env)->CallObjectMethod(env, telephonymanager, getDeviceId);
   	
    DP_IMIE = (*env)->GetStringUTFChars(env, deviceid, 0);
	return 0;
}

  2,获取serial number

#include <sys/system_properties.h>
void getAndroidDeviceID_Serial(char *deviceID)//serial number
{
	__system_property_get("ro.serialno",deviceID);
}

  

转载于:https://www.cnblogs.com/273809717/archive/2013/02/21/2921058.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值