关于DelphiXE5如何获取Android手机SIM卡串号

手机号不是存在SIM卡上的,SIM卡只有一个串号.
在运营商的服务器上有手机号和序号对应的一张表.所以你SIM卡办理遗失,运营商只要把新SIM卡的串号和你原来的手机号绑定即可.

获取手机号的唯一办法是收个短信,短信里面有你的手机号码.所以很多程序为了获取手机号会要求你注册时发短信,然后它给你回个短信.

uses
  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge,
  Androidapi.JNI.Telephony, Androidapi.JNI.JavaTypes, FMX.Helpers.Android;

var
  TelephonyManager: JTelephonyManager;
  TelephonyServiceNative: JObject;
begin
  TelephonyServiceNative := SharedActivityContext.getSystemService
    (TJContext.JavaClass.TELEPHONY_SERVICE);
  if Assigned(TelephonyServiceNative) then
    TelephonyManager := TJTelephonyManager.Wrap
      ((TelephonyServiceNative as ILocalObject).GetObjectID);
  //TelephonyManager.getDeviceId 取IMEI
  //TelephonyManager.getLine1Number 取MSISDN  手机号,大部分SIM卡中不会写入这个信息 
  //TelephonyManager.getSimSerialNumber 取ICCID
  //TelephonyManager.getSubscriberId 取IMSI  运营商实际上是用这个查询的他那张对应电话号码的表
  //还有很多方法,具体请查看JTelephonyManager的声明
end;

此条目发表在Delphi, 未分类分类目录。将固定链接加入收藏夹。

关于DelphiXE5如何获取Android手机SIM卡串号》有 6 条评论

  1. ji说:

    您好!怎么给 tJavaObjectArray 这个数组添加元素?多谢!

    unit HeaderFooterTemplate;

    interface

    uses
    System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
    FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls
    ,Androidapi.JNI.Provider,
    Androidapi.JNIBridge,
    Androidapi.JNI.JavaTypes,
    Androidapi.JNI.Webkit,
    Androidapi.JNI.Net,
    Androidapi.JNI.Util,
    Androidapi.JNI.GraphicsContentViewText ;

    type
    THeaderFooterForm = class(TForm)
    Header: TToolBar;
    Footer: TToolBar;
    HeaderLabel: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    HeaderFooterForm: THeaderFooterForm;

    implementation

    {$R *.fmx}

    procedure THeaderFooterForm.Button1Click(Sender: TObject);
    var ph:JContentResolver;
    c:JContacts;
    uri:Jnet_Uri ;
    s :Jnet_UriClass;
    sb:JCommonDataKinds_PhoneClass;
    dp:JContacts_PeopleColumnsClass;
    my,my1:tJavaObjectArray;
    cu:JCursor;
    a,b:JString;
    begin
    //my:=
    // uri:=s.parse(‘content://icc/adn’) ;
    //my.Create(1);
    //my:= dp.DISPLAY_NAME.toString;
    //.
    // my.SetRawItem(0,StringToJString(‘dp.DISPLAY_NAME’));
    //my[0]:=dp.DISPLAY_NAME;
    //my.
    //TJNIResolver.SetObjectArrayElement(my,0,dp.DISPLAY_NAME);
    //a:=StringToJString(”) ;
    // b:=StringToJString(”);
    //my.s
    // my.
    //ph.q
    ShowMessage(‘ok’);
    cu:=ph.query(sb.CONTENT_URI,my,a,my1,b);

    end;

    end.

  2. ji说:

    还有怎么传递JNI里函数里传递NULL值?

  3. 匿名说:

    武兄能否搞个摄像头读取条码的例子

  4. Ruralist说:

    博主你好,我在虚拟机中执行一个 hello world, 2.3.3 版本程序进入即退出,4.1.2 版本则很正常.你知道是什么问题吗

  5. 徐向羽说:

    我试过了,IMEI和ICCID取出来都是空串,为什么?

  6. cjc说:

    测试成功,都可以读。

Ruralist进行回复 取消回复

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

你必须启用JavaScript