`
ming_fanglin
  • 浏览: 223547 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过j2me获取手机imei号码和cellid(基站号)

阅读更多
package study;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import de.enough.polish.ui.Form;

/**
*
* @author: zhanghongzhi lanfanss@126.com
* @version: 0.1
* @time: 2008-8-10 下午01:56:17
*
*/
public class GetIMEIAndCellId extends MIDlet implements CommandListener {
    private Command exitCommand = new Command("exit", Command.EXIT, 1);

     Form form = new Form("imei and cellid");
     Display display = null;

    public GetIMEIAndCellId() {
         display = Display.getDisplay(this);

     }

    protected void destroyApp(boolean arg0) {

     }

    protected void pauseApp() {

     }

    protected void startApp() throws MIDletStateChangeException {
        //获取系统信息
         String info = System.getProperty("microedition.platform");
        //获取到imei号码
         String imei = "";
        //cellid
         String cellid = "";
        //lac
         String lac = "";
        //#if polish.vendor==Sony-Ericsson
         imei = System.getProperty("com.sonyericsson.imei");
        //参考 http://forums.sun.com/thread.jspa?threadID=5278668
        //https://developer.sonyericsson.com/message/110949
         cellid = System.getProperty("com.sonyericsson.net.cellid");
        //获取索爱机子的
         lac = System.getProperty("com.sonyericsson.net.lac");
        //#else if polish.vendor==Nokia
         imei = System.getProperty("phone.imei");
        if (imei == null || "".equals(imei)) {
             imei = System.getProperty("com.nokia.IMEI");
         }
        if (imei == null || "".equals(imei)) {
             imei = System.getProperty("com.nokia.mid.imei");
         }
        //获取到cellid
        //参考http://wiki.forum.nokia.com/index.php/CS000947_-_Getting_Cell_ID_in_Java_ME
        //#if polish.group==Series60
         cellid = System.getProperty("com.nokia.mid.cellid");
        //#else if polish.group==Series40
         cellid = System.getProperty("Cell-ID");
        //#endif
        //#else if polish.vendor==Siemens
         imei = System.getProperty("com.siemens.imei");
        //#else if polish.vendor==Motorola
         imei = System.getProperty("com.motorola.IMEI");
        //cellid 参考 http://web.mit.edu/21w.780/www/spring2007/guide/
         cellid = System.getProperty("CellID");
        //#else if polish.vendor==Samsung
         imei = System.getProperty("com.samsung.imei");
        //#endif

        if (imei == null || "".equals(imei)) {
             imei = System.getProperty("IMEI");
         }

        //展示出来
         form.append("platforminfo:" + info);
         form.append("imei:" + imei);
         form.append("cellid:" + cellid);
         form.setCommandListener(this);
         form.addCommand(exitCommand);
         display.setCurrent(form);
     }

    public void commandAction(Command cmd, Displayable item) {
        if (cmd == exitCommand) {
             destroyApp(false);
             notifyDestroyed();
         }
     }

}


目前我手机的测试结果如下,希望大家能够补充测试结果或者指出文中纰漏之处:
夏普-sh9010c:不能够获取
sonyericsson:
     c702,k818c:能够获取imei及cellid
需要注意的是,必须是受信任的Midlet才可以取到这些数据。也就是说Midlet必须经过签名上述代码才可以工作,否则获取到的是NULL。。
下面是从别的地方看来的,没做过测试,供参考。
a) Nokia = System.getProperty("com.nokia.mid.imei");
System.getProperty("com.nokia.IMEI");
System.getProperty("phone.imei");

b) Samsung
System.getProperty("com.samsung.imei");

c) Sony-Ericsson
System.getProperty("com.sonyericsson.imei");

PS.

IMSI: IMSI全称是International Mobile Subscriber Identification Number,移动用户身份码。当手机开机后,在接入网络的过程中有一个注册登记的过程,系统通过控制信道将经加密算法后的参数组传送给客户,手机中的SIM卡收到参数后,与SIM卡存储的客户鉴权参数经同样算法后对比,结果相同就允许接入,否则为非法客户,网络拒绝为此客户服务。IMSI唯一的标志了一个SIM卡。
IMEI: IMEI即International Mobile Equipment Identity(国际移动设备身份)的简称,也被称为串号,它唯一标志了一台移动设备,比如手机。 IMEI码一般由15位数字组成,绝大多数的GSM手机只要按下“*#06#”,IMEI码就会显示出来。其格式如下: TAC即Type Approval Code,为设备型号核准号码。FAC即Final Assembly Code,为最后装配号码。 SNR即Serial Number,为出厂序号。 SP即Spare Number,为备用号码。 有时候,我们在应用中需要获取IMSI或者IMEI号用于将应用程序和手机或SIM卡绑在一起。获取的方式在各不同厂商的各款手机上不尽相同,在motorola RAZR E6   上采用System.getProperty()获取。相应程序代码是:

             String imei= System.getProperty("IMEI"); //for E6
             if ( null == imei )
                 imei = System.getProperty("phone.IMEI");
            
             String imsi = System.getProperty("IMSI"); //for E6
             if ( null == imsi )
                 imei = System.getProperty("phone.IMSI");
            
             g.drawString("IMEI: "+imei, 10, 50, Graphics.LEFT | Graphics.TOP);
             g.drawString("IMSI: "+imsi, 10, 70, Graphics.LEFT | Graphics.TOP);
分享到:
评论

相关推荐

    IMEI.rar_IMEI_基站

    总结来说,IMEI.rar_IMEI_基站这个压缩包文件内容可能涉及了如何使用J2ME编程语言获取手机的IMEI码和基站信息。IMEI码的获取相对简单,主要通过System.getProperty()方法;而基站信息的获取则需要更深入的地理位置...

    j2me获取基站信息

    ### j2me获取基站信息 在移动通信领域中,基站信息是进行位置服务的重要依据之一。J2ME(Java 2 Micro Edition)作为一款适用于移动设备的开发平台,在早期的移动应用开发中占据了一席之地。本文将详细介绍如何在...

    手机号码本 j2me

    总结,J2ME实现的手机号码本展示了如何在有限的硬件资源和环境中开发高效、实用的应用。通过对RecordStore的操作,实现了数据的存储和检索,结合MIDP提供的UI组件,构建出用户友好的交互界面。尽管现在J2ME已被更...

    j2me呼叫手机号码.rar

    标题中的“j2me呼叫手机号码.rar”表明这是一个与Java ME(J2ME)平台相关的项目,特别是关于通过J2ME应用程序拨打电话的功能。J2ME是Java的一种轻量级版本,用于移动设备和嵌入式系统,如早期的智能手机和平板电脑...

    获取J2ME平台手机系统属性

    总的来说,获取J2ME平台手机系统属性是移动开发中的基础操作,通过理解和使用`MIDlet`类、`Connector`类,以及相关的JSR扩展API,开发者能够获取到丰富的设备信息,以实现更加智能和定制化的应用。而`SystemProperty...

    基于j2me的手机游戏开发

    开发者需要熟悉MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device Configuration),这是J2ME用于手机开发的两个核心组件。 ### 2. 创建J2ME项目 开发J2ME游戏的第一步是设置开发环境,...

    j2me版本免费、实用的手机号码归属地查询 v2.0

    开发者需要维护一个包含全国乃至全球手机号码归属地数据的数据库,并通过无线网络(如GPRS或3G)与服务器进行交互,获取并更新号码归属地信息。在实际使用中,用户只需输入想要查询的手机号码,应用就能快速返回其...

    j2me手机浏览器/j2me手机浏览器

    由于硬件限制,j2me手机浏览器必须进行大量优化,例如通过减少图像质量和压缩文本来降低数据传输量。此外,它们可能不支持某些HTML元素和属性,或者对页面大小和复杂性有限制。 总的来说,“j2me手机浏览器”是J2ME...

    j2me编写手机RPG游戏

    J2ME,全称为Java Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。在这个标题中,“j2me编写手机RPG游戏”意味着开发者使用J2ME技术来创建了一款角色扮演游戏...

    J2ME获取Google地图

    在移动开发领域,Java 2 Micro Edition(J2ME)是一种广泛使用的平台,用于构建运行在小型设备,如手机和嵌入式系统上的应用程序。在本文中,我们将深入探讨如何在J2ME环境下获取并展示Google地图,包括卫星图像、...

    J2ME 3D手机游戏开发详解代码和书籍

    **3D手机游戏开发概述** 3D手机游戏开发是一个复杂且引人入胜的领域,随着移动设备硬件性能的不断提升,3D游戏...初学者通过学习提供的代码和书籍,可以逐步掌握这个领域的核心知识,并有能力开发出自己的3D手机游戏。

    j2me获取真机屏幕宽度 高度的小程序 源码

    标题和描述提到的是一款J2ME小程序,其源码专门用于获取手机屏幕的实际宽度和高度。下面我们将深入探讨这个话题,讲解如何在J2ME中获取屏幕信息,并分析可能的实现方式。 首先,我们需要了解J2ME的显示系统。在J2ME...

    J2ME手机电话本

    **J2ME手机电话本详解** ...总的来说,J2ME手机电话本的实现涉及了J2ME的多个关键技术,包括数据存储、用户界面设计、事件处理和错误处理等,通过这些技术的综合运用,我们可以为移动用户提供便捷、实用的电话本功能。

    J2ME 手机程序开发

    Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。它提供了开发和部署小型应用程序,称为MIDlets,的能力。J2ME在手机程序开发中的应用广泛,因为它...

    开发j2me的手机模拟器

    总的来说,J2ME手机模拟器是开发过程中不可或缺的工具,它们提供了在实际设备上部署前进行测试和优化的平台。MicroEmulator作为开源选项,为开发者提供了一种高效且灵活的方式来测试他们的J2ME应用程序。

    手机J2ME程序编写教程

    **手机J2ME程序编写教程** Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式...通过阅读"手机程序编写.pdf"和参考"说明.txt",你将能全面掌握J2ME编程的基础知识,进而创建出属于自己的手机应用程序。

    j2me手机高级编程

    《J2ME手机高级编程》涉及的是Java 2 Micro Edition(J2ME)在移动设备上的高级应用开发,尤其关注无线通信、游戏开发、电子地图浏览、播放器实现、持久化存储、移动商务应用以及XML模型的应用。这些主题涵盖了移动...

Global site tag (gtag.js) - Google Analytics