Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как получить IMEI?


estra

Вопрос

Рекомендуемые сообщения

  • 0

а для Android:

 

Uses
Androidapi.JNI.Telephony, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText;
 
function TfMain.GetMyImei: string;
  var
  TelephonyObj: JObject;
  TelephonyManager: JTelephonyManager;
begin
  Result := '';
  TelephonyObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
  TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID);
  Result := JStringToString(TelephonyManager.getDeviceId);
end;
Ссылка на комментарий
  • 0

 

а для Android:

Uses
Androidapi.JNI.Telephony, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText;
 
function TfMain.GetMyImei: string;
  var
  TelephonyObj: JObject;
  TelephonyManager: JTelephonyManager;
begin
  Result := '';
  TelephonyObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
  TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID);
  Result := JStringToString(TelephonyManager.getDeviceId);
end;

Добрый день. У меня планшет с двумя симками, и данный пример показывает imei только одного модуля.

Если установлена одна сим карта, то ИМЕЙ этого модуля и показывает, а если одновременно 2 симкарты установить, то все равно показывает ИМЕЙ одного модуля, то одного модуля то другого, причем никакой закономерности я не выявил.

 

Как получить ИМЕЙ номера обоих модулей одновременно, в виде списка, или строки с разделителем, не важно как.

Спасибо.

Ссылка на комментарий
  • 0

Дам вам подсказку из Android доков...

 

 

public String  getDeviceId ()
 
Added in API level 1

Returns the unique device ID, for example, the IMEI for GSM and the MEID or ESN for CDMA phones. Return null if device ID is not available.

Requires Permission: READ_PHONE_STATE

public String  getDeviceId (int slotId)
 
Added in API level 23

Returns the unique device ID of a subscription, for example, the IMEI for GSM and the MEID for CDMA phones. Return null if device ID is not available.

Requires Permission: READ_PHONE_STATE

Parameters slotId of which deviceID is returned

 

Ссылка на комментарий
  • 0

Вот рабочий код 

не забываем delphi 10 Seattle:
Project-View source
там между FMX.Forms, и Unit1 in 'Unit1.pas' {Form1},
вставляем:

 

  FMX.Helpers.Android,
   Androidapi.JNI.App,
   Androidapi.JNI.GraphicsContentViewText,
   Androidapi.Helpers,
   Androidapi.JNI.JavaTypes,
   Androidapi.JNIBridge,
   Androidapi.JNI.Telephony,
   Androidapi.JNI.Provider ,

 

===============================================

 

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
  FMX.Edit, FMX.Controls.Presentation, FMX.StdCtrls,
  Androidapi.JNI.JavaTypes, Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText,FMX.Platform.Android,
  Androidapi.JNI.Telephony,
  Androidapi.JNI.Provider ,

  Androidapi.JNIBridge,
  FMX.Helpers.Android;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Layout1: TLayout;

    Layout2: TLayout;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
  obj: JObject;
  tm: JTelephonyManager;
  identifier: string;
begin
  obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
  if obj <> nil then
  begin
    tm := TJTelephonyManager.Wrap((obj as ILocalObject).GetObjectID);
    if tm <> nil then
      identifier := JStringToString(tm.getDeviceId);
  end;
  if identifier = '' then
    identifier := JStringToString(TJSettings_Secure.JavaClass.getString(SharedActivity.getContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID));

  Edit1.Text:= 'IMEI : '+identifier;
end;

end.
NoxPlayer.thumb.jpg.1bf7654858eba764e375e02e20bd778c.jpg

 

Готовый код проект https://disk.yandex.ru/d/XkL7nnDj0lVKbAКак получить IMEI.rar

 

Ссылка на комментарий
  • 0
1 час назад, Новый пользователь сказал:

не забываем delphi 10 Seattle:
Project-View source
там между FMX.Forms, и Unit1 in 'Unit1.pas' {Form1},
вставляем:

вовсе необязательно ИМЕННО там вставлять

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...