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

探讨:通过j2me获取手机imei号码和cellid(基站号)
本篇是本人收集到的怎么获取手机的Imei和cellid的总结,由于这两个属性是每个厂商自己实现,故而没有统一的方法。本人收集的也不全,测试亦是不全面。放置一篇文章在这里,希望有兴趣的人多多补充。

资料来源如下:
http://web.mit.edu/21w.780/www/spring2007/guide/
http://wiki.forum.nokia.com/index.php/CS000947_-_Getting_Cell_ID_in_Java_ME
http://forums.sun.com/thread.jspa?threadID=5278668
https://developer.sonyericsson.com/message/110949

测试代码如下,当中使用了polish做适配:

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 [email protected]
 * 
@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

你可能感兴趣的:(探讨:通过j2me获取手机imei号码和cellid(基站号))