转:Delphi D10.X安卓APP开发中获取硬件信息及手机号
TJBuild
这里面包括了较多的设备信息
BOARD 主板
BOOTLOADER 系统启动程序版本号
BRAND 系统定制商
CPU_ABI cpu指令集
CPU_ABI2 cpu指令集2
DEVICE 设备驱动名称
DISPLAY 显示屏参数,设备显示器的版本包(在系统设置中显示为版本号)和ID一样
FINGERPRINT 识别码(这个码不是唯一码)通常是一串参数的组合,没太大意义
HARDWARE 硬件名称
HOST设备主机地址
MANUFACTURER 硬件制造商
MODEL 版本即最终用户可见的名称
PRODUCT 整个产品的名称
RADIO 无线电固件版本:使用**getRadioVersion()**代替。
SERIAL 硬件序列号
TAGS 描述build的标签,如未签名,debug等等。
TIME 系统编译时间
TYPE 编译的类型
USER 固定的,没意义
// 手机型号(MI XXX) Memo1.Lines.Add('手机型号(MI XXX):' + JStringToString(TJBuild.JavaClass.MODEL)); // 设备基板名称 Memo1.Lines.Add('设备基板名称:' + JStringToString(TJBuild.JavaClass.BOARD)); // 系统启动程序版本 Memo1.Lines.Add('系统启动程序版本:' + JStringToString (TJBuild.JavaClass.BOOTLOADER)); // 系统定制商 Memo1.Lines.Add('设备品牌:' + JStringToString(TJBuild.JavaClass.BRAND)); // cpu指令集 Memo1.Lines.Add('cpu指令集:' + JStringToString(TJBuild.JavaClass.CPU_ABI)); // cpu指令集2 Memo1.Lines.Add('cpu指令集2:' + JStringToString(TJBuild.JavaClass.CPU_ABI2)); // 设备驱动名称 Memo1.Lines.Add('设备驱动名称:' + JStringToString(TJBuild.JavaClass.DEVICE)); // 设备显示的版本包(在系统设置中显示为版本号)和ID一样 Memo1.Lines.Add('显示屏参数:' + JStringToString(TJBuild.JavaClass.DISPLAY)); // 设备制造商 Memo1.Lines.Add('设备制造商:' + JStringToString(TJBuild.JavaClass.MANUFACTURER)); // 无线电固件版本 Memo1.Lines.Add('无线电固件版本:' + JStringToString (TJBuild.JavaClass.getRadioVersion)); // 设备的唯一标识。由设备的多个信息拼接合成。 注意,这个码不是唯一 码 Memo1.Lines.Add('硬件识别码(这个码不是唯一 码):' + JStringToString(TJBuild.JavaClass.FINGERPRINT)); ———————————————— 版权声明:本文为CSDN博主「tanqth」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/tanqth/java/article/details/104779089
TelephonyManager
这部分包括了手机信息如卡槽信息、手机卡信息、运营商信息、网络信息等等,演示里也只列了一部分主要内容。
TelephonyServiceNative := TAndroidHelper.Context.getSystemService (TJContext.JavaClass.TELEPHONY_SERVICE); if Assigned(TelephonyServiceNative) then begin Memo1.Lines.Add('======================'); try TelephonyManager := TJTelephonyManager.Wrap ((TelephonyServiceNative as ILocalObject).GetObjectID); // 手机卡槽数 vPhoneCount := TelephonyManager.getPhoneCount; Memo1.Lines.Add('卡槽数:' + vPhoneCount.ToString); // 插卡数 vSubscriptionManager := TJSubscriptionManager.JavaClass.from (TAndroidHelper.Context); vSubManagerCoun := vSubscriptionManager.getActiveSubscriptionInfoCount(); Memo1.Lines.Add('插卡数:' + vSubManagerCoun.ToString); // 设备ID Memo1.Lines.Add('DeviceId_1:' + JStringToString (TelephonyManager.getDeviceId(0))); if vPhoneCount > 1 then Memo1.Lines.Add('DeviceId_2:' + JStringToString(TelephonyManager.getDeviceId(1))); // 硬件Imei Memo1.Lines.Add('Imei_1:' + JStringToString (TelephonyManager.getImei(0))); if vPhoneCount > 1 then Memo1.Lines.Add('Imei_2:' + JStringToString (TelephonyManager.getImei(1))); // 硬件Meid try Memo1.Lines.Add('Meid_1:' + JStringToString (TelephonyManager.getMeid(0))); except on E: Exception do end; try if vPhoneCount > 1 then Memo1.Lines.Add('Meid_2:' + JStringToString (TelephonyManager.getMeid(1))); except on E: Exception do end; // SubscriberId Memo1.Lines.Add('SubscriberId(IMSI号):' + JStringToString(TelephonyManager.getSubscriberId)); // Line1Number Memo1.Lines.Add('Line1Number:' + JStringToString (TelephonyManager.getLine1Number)); //分别取各卡槽信息 for I := 0 to vSubManagerCoun-1 do begin vSubscriptionInfo:=vSubscriptionManager.getActiveSubscriptionInfo(I+1); Memo1.Lines.Add(I.ToString+'手机号: ' + JStringToString (vSubscriptionInfo.getNumber)); Memo1.Lines.Add(I.ToString+'使用卡槽: ' + (vSubscriptionInfo.getSimSlotIndex+1).ToString); Memo1.Lines.Add(I.ToString+'运营商: ' + JCharSequenceToStr (vSubscriptionInfo.getCarrierName)); end; except end; end; ———————————————— 版权声明:本文为CSDN博主「tanqth」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/tanqth/java/article/details/104779089