android 获得手机中的SIM卡信息和MSISDN、ICCID、IMEI信息

文章标签: android
2015-3-18 14:44:30     人阅读    

 最新写了一个app需要从手机中获得 MSISDN信息,刚开始对 MSISDN 的概念没有理解清楚,以为是存储在sim卡中的信息,使用 getLine1Number() 方法获得的时候一直获得的是我手机中存储的号码,并非是sim卡中存储的号码

 这里澄清下2个概念:
  MSISDN:号码是指主叫客户为呼叫数字公用陆地蜂窝移动通信网中客户所需拨的号码。号码的结构为:MSISDN=CC(Country Code)+NDC(National Destination Code)+SN(Subscriber Number)
中国情况:CC=86;NDC:;
法国情况:CC=33;NDC:FT=607/608/68x,SFR=603/609/61x,Bouygues=66x;SN=6位数字
IMSI=MCC(Mobile Country Code)+MNC(Mobile Network Code)+MSIN(Mobile Subscriber Identification Number)
国际移动客户识别码(IMSI)
为了在无线路径和整个GSM移动通信网上正确地识别某个移动客户,就必须给移动客户分配一个特定的识别码。
中国情况:MCC=460;MNC:移动=00/02?联通=01?;
法国情况:MCC=208;MNC:FT=01,SFR=10,Bouygues=20;MSIN=多至11位数字
举个例子: MSISDN:+33 610 891187

android 获得IMSI 号码
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
 
 String imsi = mTelephonyMgr.getSubscriberId();

android 获得 imei 号码
String imei = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMSI);


下面提供一个类获得所有的手机各种号码的信息。。。

/*************************************************************************************************************
                       说明:
 *
 * IMEIIMSI:international mobiles subscriber identity国际移动用户号码标识,这个一般大家是不知道,GSM必须写在卡内相关文件中;
 * MSISDN:mobile subscriber ISDN用户号码,这个是我们说的139,136那个号码;
 * ICCID:ICC identity集成电路卡标识,这个是唯一标识一张卡片物理号码的;
 * IMEI:international mobile Equipment identity手机唯一标识码;
 * 
 * ***********************************************************************************************************/
 
package com.uustock.securities.investmentfund.util;
 
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.telephony.TelephonyManager;
 
public class PhoneManager {
 
    Context context;
    TelephonyManager tm;
 
    public PhoneManager(Context context) {
        this.context = context;
        tm = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
    }
 
    /** 取出IMEI */
    public String getIMEI() {
        return tm.getDeviceId();
    }
 
    /** 手机型号 */
    public String getModel() {
        return Build.MODEL;
    }
 
    /** SDK版本号 */
    public String getSDK() {
        return Build.VERSION.SDK;
    }
 
    /** 取出(手机号)MSISDN,很可能为空 */
    public String getPhoneNumber() {
        return tm.getLine1Number();
    }
 
    /** 取出ICCID */
    public String getICCID() {
        return tm.getSimSerialNumber();
    }
 
    /** 取出ICCID */
    public String getIMSI() {
        return tm.getSubscriberId();
    }
 
    /** 获得自己程序的版本号 */
    public String getAppVersionName() {
 
        String versionName = "";
 
        try {
 
            // ---get the package info---
 
            PackageManager pm = context.getPackageManager();
 
            PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
 
            versionName = pi.versionName;
 
            if (versionName == null || versionName.length() <= 0) {
 
                return "";
            }
 
        } catch (Exception e) {
 
            // Log.e(TAG, "Exception", e);
 
        }
 
        return versionName;
 
    }
 
    /** 检查SD卡是否可用 */
    public boolean checkSDCard() {
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED))
            return true;
        else
            return false;
    }
}


原文地址:http://www.itmmd.com/201503/658.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android socket 链接java后台服务器   上一篇
下一篇  安卓5.0 ListActivity不填充的ListView
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!