品牌網(wǎng)站建設(shè)磐石網(wǎng)絡(luò)優(yōu)等好搜搜索
Demo與代碼已上傳到CSDN下載。
這里簡(jiǎn)單說(shuō)一下代碼內(nèi)容,完整代碼請(qǐng)自行下載,不清楚的歡迎留言交流。
前言
演示Demo使用了我自己開(kāi)發(fā)的一個(gè)控件,TLayoutPro
《Delphi D10.3 LayoutsPro 控件簡(jiǎn)介 -避免輸入焦點(diǎn)被虛擬鍵盤(pán)遮擋》請(qǐng)查看并下載控件代碼。當(dāng)然,這個(gè)控件針對(duì)于獲取安卓設(shè)備信息及手機(jī)號(hào)不是必須的。
需要的權(quán)限
需要以下權(quán)限:
?
在高版本的安卓系統(tǒng)中,要想獲取到設(shè)備信息,需要?jiǎng)討B(tài)申請(qǐng)權(quán)限,在演示代碼里已包括,代碼可同時(shí)在高低安卓版本中使用。
代碼說(shuō)明
獲取信息主要是兩個(gè)部分:
TJBuild
這里面包括了較多的設(shè)備信息
BOARD 主板
BOOTLOADER 系統(tǒng)啟動(dòng)程序版本號(hào)
BRAND 系統(tǒng)定制商
CPU_ABI cpu指令集
CPU_ABI2 cpu指令集2
DEVICE 設(shè)備驅(qū)動(dòng)名稱(chēng)
DISPLAY 顯示屏參數(shù),設(shè)備顯示器的版本包(在系統(tǒng)設(shè)置中顯示為版本號(hào))和ID一樣
FINGERPRINT 識(shí)別碼(這個(gè)碼不是唯一碼)通常是一串參數(shù)的組合,沒(méi)太大意義
HARDWARE 硬件名稱(chēng)
HOST設(shè)備主機(jī)地址
MANUFACTURER 硬件制造商
MODEL 版本即最終用戶(hù)可見(jiàn)的名稱(chēng)
PRODUCT 整個(gè)產(chǎn)品的名稱(chēng)
RADIO 無(wú)線電固件版本:使用**getRadioVersion()**代替。
SERIAL 硬件序列號(hào)
TAGS 描述build的標(biāo)簽,如未簽名,debug等等。
TIME 系統(tǒng)編譯時(shí)間
TYPE 編譯的類(lèi)型
USER 固定的,沒(méi)意義
示例代碼(部分):
// 手機(jī)型號(hào)(MI XXX)
? ? Memo1.Lines.Add('手機(jī)型號(hào)(MI XXX):' + JStringToString(TJBuild.JavaClass.MODEL));
? ? // 設(shè)備基板名稱(chēng)
? ? Memo1.Lines.Add('設(shè)備基板名稱(chēng):' + JStringToString(TJBuild.JavaClass.BOARD));
? ? // 系統(tǒng)啟動(dòng)程序版本
? ? Memo1.Lines.Add('系統(tǒng)啟動(dòng)程序版本:' + JStringToString
? ? ? (TJBuild.JavaClass.BOOTLOADER));
? ? // 系統(tǒng)定制商
? ? Memo1.Lines.Add('設(shè)備品牌:' + 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));
? ? // 設(shè)備驅(qū)動(dòng)名稱(chēng)
? ? Memo1.Lines.Add('設(shè)備驅(qū)動(dòng)名稱(chēng):' + JStringToString(TJBuild.JavaClass.DEVICE));
? ? // 設(shè)備顯示的版本包(在系統(tǒng)設(shè)置中顯示為版本號(hào))和ID一樣
? ? Memo1.Lines.Add('顯示屏參數(shù):' + JStringToString(TJBuild.JavaClass.DISPLAY));
? ? // 設(shè)備制造商
? ? Memo1.Lines.Add('設(shè)備制造商:' + JStringToString(TJBuild.JavaClass.MANUFACTURER));
? ? // 無(wú)線電固件版本
? ? Memo1.Lines.Add('無(wú)線電固件版本:' + JStringToString
? ? ? (TJBuild.JavaClass.getRadioVersion));
? ? // 設(shè)備的唯一標(biāo)識(shí)。由設(shè)備的多個(gè)信息拼接合成。 注意,這個(gè)碼不是唯一 碼
? ? Memo1.Lines.Add('硬件識(shí)別碼(這個(gè)碼不是唯一 碼):' +
? ? ? JStringToString(TJBuild.JavaClass.FINGERPRINT));
TelephonyManager
這部分包括了手機(jī)信息如卡槽信息、手機(jī)卡信息、運(yùn)營(yíng)商信息、網(wǎng)絡(luò)信息等等,演示里也只列了一部分主要內(nèi)容。
示例代碼(部分):
? ? TelephonyServiceNative := TAndroidHelper.Context.getSystemService
? ? ? (TJContext.JavaClass.TELEPHONY_SERVICE);
? ? if Assigned(TelephonyServiceNative) then
? ? begin
? ? ? Memo1.Lines.Add('======================');
? ? ? try
? ? ? ? TelephonyManager := TJTelephonyManager.Wrap
? ? ? ? ? ((TelephonyServiceNative as ILocalObject).GetObjectID);
? ? ? ? // 手機(jī)卡槽數(shù)
? ? ? ? vPhoneCount := TelephonyManager.getPhoneCount;
? ? ? ? Memo1.Lines.Add('卡槽數(shù):' + vPhoneCount.ToString);
? ? ? ? // 插卡數(shù)
? ? ? ? vSubscriptionManager := TJSubscriptionManager.JavaClass.from
? ? ? ? ? (TAndroidHelper.Context);
? ? ? ? vSubManagerCoun :=
? ? ? ? ? vSubscriptionManager.getActiveSubscriptionInfoCount();
? ? ? ? Memo1.Lines.Add('插卡數(shù):' + vSubManagerCoun.ToString);
? ? ? ? // 設(shè)備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號(hào)):' +
? ? ? ? ? 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+'手機(jī)號(hào): ' + JStringToString
? ? ? ? ? (vSubscriptionInfo.getNumber));
? ? ? ? Memo1.Lines.Add(I.ToString+'使用卡槽: ' + (vSubscriptionInfo.getSimSlotIndex+1).ToString);
? ? ? ? Memo1.Lines.Add(I.ToString+'運(yùn)營(yíng)商: ' + JCharSequenceToStr
? ? ? ? ? (vSubscriptionInfo.getCarrierName));
? ? ? ? end;
? ? ? except
? ? ? end;
? ? end;
獲取信息展示
————————————————
? ? ? ? ? ? ? ? ? ? ? ? ? ? 版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。
? ? ? ? ? ? ? ? ? ? ? ??
原文鏈接:https://blog.csdn.net/tanqth/article/details/104779089
獲取信息展示
相關(guān)文章導(dǎo)讀
《Delphi D10.3 LayoutsPro 控件簡(jiǎn)介 -避免輸入焦點(diǎn)被虛擬鍵盤(pán)遮擋》
《Delphi安卓APP獲取手機(jī)信息》源碼下載地址