本文整理自网络,侵删。
每个称为IMEI的手机中都有一个识别码。
IMEI(国际移动设备识别码)是在所有GSM移动设备上预先记录的USSD代码。
借助此代码,我们可以唯一标识能够在我们的App中执行操作的任何设备。
如何在Android上获取IMEI要从Android上的Delphi获取IMEI标识符,这非常简单,但是我们必须考虑权限。
要获得IMEI,我们需要获得用户批准的READ_PHONE_STATE权限。
为此,我们必须转到菜单项目->选项->使用权限并激活READ_PHONE_STATE权限。
uses System.Permissions, Androidapi.helpers, Androidapi.JNI.OS, Androidapi.JNI.Telephony, Androidapi.JNI.Provider, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, FMX.Helpers.Android; {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject);begin showmessage(getImei);end; procedure TForm1.FormCreate(Sender: TObject);var vPermisoPhoneState: string;begin vPermisoPhoneState := JStringToString(TJManifest_permission.JavaClass.READ_PHONE_STATE); PermissionsService.RequestPermissions([vPermisoPhoneState], nil); end; function TForm1.getImei(): string;var vObjAux: JObject; vTM: JTelephonyManager; vIMEI: String;begin vObjAux := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); if vObjAux <> nil then begin vTM := TJTelephonyManager.Wrap((vObjAux as ILocalObject).GetObjectID); if vTM <> nil then vIMEI := JStringToString(vTM.getDeviceId); end; if vIMEI = '' then vIMEI := JStringToString(TJSettings_Secure.JavaClass.getString(SharedActivity.getContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID)); Result := vIMEI;end;
Delphi Android获取设备ID随着移动设备的使用,程序员迫切需要能够识别每个设备。
要执行此操作,我们有两种主要方法,一种是通过移动设备本身的IMEI,即设备硬制造商提供的ID。或第二种方式是Android为已安装的应用提供的ID。
我个人使用第二个选项,因为对于第一个选项,获得IMEI,我们必须获得用户对READ_PHONE_STATE许可的批准,因为这是危险的许可。
从Delphi获取Android上的设备ID要从Delphi获取Android Id,我们只需要进行几行编程即可。
我们想澄清一下这个ID可能会有所不同。什么时候变化?例如,在将移动设备恢复为出厂设置时或在植根时,它可能会有所不同。
因此,如果用户安装了该应用程序,我们将获得一个ID,但是如果用户将设备重置为出厂设置,然后重新安装我们的应用程序,则我们将获得与第一个ID不同的ID。
为了在Android中获取ID,我们需要两个单元:Androidapi.JNI.Provider和Androidapi.helpers,其功能如下:
Uses Androidapi.JNI.Provider, Androidapi.helpers; function GetDeviceId(): string;begin try Result := JStringToString(TJSettings_SECURE.JavaClass.getString(TAndroidHelper.Activity.getContentResolver, TJSettings_SECURE.JavaClass.ANDROID_ID)); except Result := ''; end;end;
相关阅读 >>
Delphi 按字符串长度对tstringlist的元素进行排序
更多相关阅读请进入《Delphi》频道 >>