浏览 7305 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-23
最后修改:2010-01-26
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); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |