Demo与代码已上传到CSDN下载。
 这里简单说一下代码内容,完整代码请自行下载,不清楚的欢迎留言交流。
前言
 演示Demo使用了我自己开发的一个控件,TLayoutPro
 《Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡》请查看并下载控件代码。当然,这个控件针对于获取安卓设备信息及手机号不是必须的。
 需要的权限
 需要以下权限:
 在高版本的安卓系统中,要想获取到设备信息,需要动态申请权限,在演示代码里已包括,代码可同时在高低安卓版本中使用。
 代码说明
 获取信息主要是两个部分:
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));
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;
 获取信息展示
 ————————————————
                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                         
 原文链接:https://blog.csdn.net/tanqth/article/details/104779089
获取信息展示

相关文章导读
 《Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡》
 《Delphi安卓APP获取手机信息》源码下载地址





![CentOs7 解决yum更新源报错:[Errno 14] HTTP Error 404 - Not Found 正在尝试其它镜像。](https://i-blog.csdnimg.cn/direct/b55644a6a5b84e84862e6b3ba3f2d47e.png)













