最近,公司新上了一个项目,这个项目在安全性方面要求的比较高,所以在程序中要用到手机的IMEI和SIM卡的IMSI来对用户的身份进行验证。
先解释一下IMSI和IMEI的区别:
IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。每一只手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。
IMSI:国际移动用户识别码(IMSI) international mobile subscriber identity,国际上为唯一识别一个移动用户所分配的号码。
IMSI共有15位,其结构如下:
MCC+MNC+MSIN
MCC:Mobile Country Code,移动国家码,共3位,中国为460;
MNC:Mobile Network Code,移动网络码,共2位,中国电信CDMA系统使用03,一个典型的IMSI号码为460030912121001;
MSIN:Mobile Subscribler Identification Number共有10位,其结构如下:
09+M0M1M2M3+ABCD
其中的M0M1M2M3和MDN号码中的H0H1H2H3可存在对应关系,ABCD四位为自由分配。
可以看出IMSI在MIN号码前加了MCC,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个CDMA运营商,可以通过MNC来进行区别.
虽然看到上面的介绍,大家都已经知道IMEI和IMSI对于手机和手机SIM卡都是唯一的,并且依靠这两个参数来对用户的信息进行验证是完全可行的,但问题就是出现在这些美丽的外表之下的。
由于J2ME开发的应用程序要完全依赖于手机内置的KVM(J2ME虚拟机),又因为每个手机制造商的虚拟机提供给J2ME程序的可用接口不尽相同,所以,J2ME程序能否正确的获取手机的IMSI和IMEI,完全依赖于手机制造商底层的实现。
下面举几个获取手机IMEI和IMSI的例子;
LG String imei = System.getProperty("com.lg.imei");
String imsi=System.getProperty("com.lg.imsi");
SAMSUNG
String imei = System.getProperty("system.imei");
String imsi=System.getProperty("system.imsi");
NOKIA
String imei = System.getProperty("com.nokia.mid.imei");
String imsi=System.getProperty("com.nokia.mid.imsi");
上面NOKIA获取IMSI的方法我用红色注释了一下,因为,NOKIA对J2ME程序权限的不是很开放,所以,尽管有这个方法,但是,你还是无法获取NOKIA手机平台上的IMSI号码,
我们来看看NOKIA官方是如何说的
The IMSI (International Mobile Subscriber Identity) stored in the SIM card. For more information on IMSI, see IMSI in Wikipedia. Note that the access to this system property is limited with com.nokia.mid.mobinfo.IMSI permission. By default, this permission is available only in manufacturer and operator domain.
这回可以知道,无论说是S60,还是S40平台只有NOKIA和运营商才有权限获取这两个字符串,
由于市场上NOKIA的手机占有率非常的高,尤其是S40的平台开发的中低端机型为最多,所以放弃这些机型是不现实的,所以大家如果要做一个安全的验证的时候,获取手机的IMSI和IMEI只是一个备选方案,大家还应该研究另一套可行性较高的方案。
好了,最后在把J2ME平台获取手机本机电话号码的方法和大家说一下,因为在网上看到有些网友把获取手机号码的方法都贴了来。大家不要相信这些方法的可行性,因为在J2ME上获取手机的PHONENUMBER是不能的事情。在不发短信和不拨打电话的情况下,只有用户通过CMWAP上网的时候,移动的WAP网关才有可能获取手机的电话,至于你怎么获得,那开始要看运营商的脸色,呵呵,好了就说这么多了,如果说的哪里不对,还请大家指点。
注:下面的这个地址是我在CSDN上的博客,欢迎大家有空去坐坐。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/AlexZheng_Blog/archive/2010/02/03/5283667.aspx
分享到:
相关推荐
关于j2me的相关资料 ublic class Person implements KSerializable { private String _name; private String _answer; private String _userid;
开发者需要熟悉MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device Configuration),这是J2ME用于手机开发的两个核心组件。 ### 2. 创建J2ME项目 开发J2ME游戏的第一步是设置开发环境,...
首先,J2ME提供了` javax.microedition.midlet.MIDlet `类和` javax.microedition.io.Connector `类的一些方法来获取手机的基本信息。例如,`MIDlet`类的`getAppProperty()`方法可以用来获取特定的系统属性。这些...
Java 2 Micro Edition (J2ME) 是一种Java平台,专为嵌入式设备和移动设备,特别是手机设计。在2000年代初期,J2ME是许多非智能手机上实现互联网浏览的主要技术,其中“j2me手机浏览器”就是这样一个应用。这个应用...
Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。它提供了开发和部署小型应用程序,称为MIDlets,的能力。J2ME在手机程序开发中的应用广泛,因为它...
提供的书籍很可能是关于J2ME 3D游戏开发的教程,对于初学者来说非常有价值。书籍可能会涵盖上述所有知识点,并通过实例深入讲解如何应用这些技术。 **代码示例** 包含的代码示例可以让学习者更直观地理解3D游戏...
关于J2ME的手机编程 人物滚屏的碰撞问题的11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
本文将深入探讨不同手机设备获取IMSI的方法,并提供一种基于Java 2 Micro Edition (J2ME)的示例代码。 #### 二、IMSI简介 IMSI是全球移动通信系统(GSM)、通用分组无线服务(GPRS)以及长期演进(LTE)等移动通信...
J2ME是Java平台的一个子集,专为资源有限的嵌入式设备如早期的智能手机和平板电脑设计。它包括一套专门的开发工具和API,允许开发者创建可以在多种不同设备上运行的应用程序。 【描述】"关于j2me的实训项目,很实用...
JAVA基于J2ME的手机游戏开发(论文+源代码)JAVA基于J2ME的手机游戏开发(论文+源代码)JAVA基于J2ME的手机游戏开发(论文+源代码)JAVA基于J2ME的手机游戏开发(论文+源代码)JAVA基于J2ME的手机游戏开发(论文+源代码)JAVA...
Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机。本教程将带你深入理解如何利用J2ME技术来开发手机应用程序。 ### 一、J2ME概述 J2ME由几个不同的配置和框架...
总的来说,J2ME手机模拟器是开发过程中不可或缺的工具,它们提供了在实际设备上部署前进行测试和优化的平台。MicroEmulator作为开源选项,为开发者提供了一种高效且灵活的方式来测试他们的J2ME应用程序。
**J2ME赛车手机游戏详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的设备,如移动电话、智能手表和家用电器等。在J2ME中开发游戏,尤其是像赛车游戏这样的动态、交互性强的应用,...
J2ME是Java平台的一个子集,专为嵌入式设备,如早期的智能手机和平板电脑设计,它提供了开发移动应用程序的框架,包括手机游戏。 本教程内容丰富,主要围绕着五子棋游戏的开发进行,五子棋是一种受欢迎的双人策略...
JAVA基于J2ME的手机游戏开发(LW+源代码)JAVA基于J2ME的手机游戏开发(LW+源代码)JAVA基于J2ME的手机游戏开发(LW+源代码)JAVA基于J2ME的手机游戏开发(LW+源代码)JAVA基于J2ME的手机游戏开发(LW+源代码)JAVA基于J2ME的...
**J2ME手机电话本详解** ...总的来说,J2ME手机电话本的实现涉及了J2ME的多个关键技术,包括数据存储、用户界面设计、事件处理和错误处理等,通过这些技术的综合运用,我们可以为移动用户提供便捷、实用的电话本功能。
《J2ME手机高级编程》涉及的是Java 2 Micro Edition(J2ME)在移动设备上的高级应用开发,尤其关注无线通信、游戏开发、电子地图浏览、播放器实现、持久化存储、移动商务应用以及XML模型的应用。这些主题涵盖了移动...