Android如何获取SIM卡信息

要获取SIM卡信息必须用到一个类:TelephonyManager,这个类用于访问有关设备上的电话服务信息。
1.获取TelephonyManager对象:
TelephonyManager tm=(TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE);

2. 在文件 AndroidManifest.xml 中添加权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>


3. TelephonyManager包含的方法:
getCellLocation() 返回的单元格位置的装置 ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION

getDeviceId() 返回的IMEI / MEID的设备。 如果该设备是GSM设备 然后IMEI号将被退回,如果该设备是一个CDMA设备然后MEID 将被退回 READ_PHONE_STATE

getLine1Number() 返回设备的电话号码(MSISDN号码) READ_PHONE_STATE

getNetworkOperatorName() 返回注册的网络运营商的名字

getNetworkOperator() 返回的MCC +跨国公司的注册网络运营商 。中国为460;电信03,移动02,联通GSM 01。所有移动卡返回是46002

getNetworkCountryIso() 返回注册的网络运营商的国家代码

getSimCountryIso() 返回SIM卡运营商的国家代码 READ_PHONE_STATE

getSimOperator() 返回SIM卡运营商的单个核细胞数+冶 READ_PHONE_STATE

getSimOperatorName() 返回SIM卡运营商的名字 READ_PHONE_STATE

getSimSerialNumber() 返回SIM卡的序列号 READ_PHONE_STATE

getNetworkType() 返回网络设备可用的类型。 这将是 下列其中一个值:

TelephonyManager.NETWORK_TYPE_UNKNOWN TelephonyManager.NETWORK_TYPE_GPRS TelephonyManager.NETWORK_TYPE_EDGE TelephonyManager.NETWORK_TYPE_UMTS READ_PHONE_STATE getPhoneType() 返回设备的类型。 这将是以下值之一: TelephonyManager.PHONE_TYPE_NONE TelephonyManager.PHONE_TYPE_GSM TelephonyManager.PHONE_TYPE_CDMA READ_PHONE_STATE getSubscriberId() 返回用户识别码(的IMSI)的设备 READ_PHONE_STATE

getNeighboringCellInfo() 返回NeighboringCellInfo类代表名单 相邻小区的信息,如果可用,否则将 返回null ACCESS_COARSE_UPDATES

代码

MainActivity.java


public class MainActivity extends Activity {
	private TelephonyManager tm;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Toast.makeText(getApplicationContext(), "333333333", Toast.LENGTH_SHORT)
				.show();
		tm = (TelephonyManager) getApplicationContext().getSystemService(
				Context.TELEPHONY_SERVICE);
		
		Log.v("TAG", "DeviceId  :  " + tm.getDeviceId());
		Log.v("TAG",
				"DeviceSoftwareVersion  :  " + tm.getDeviceSoftwareVersion());
		Log.v("TAG", "NetworkCountryIso  :  " + tm.getNetworkCountryIso());
		Log.v("TAG", "NetworkOperator  :  " + tm.getNetworkOperator());
		Log.v("TAG", "SimOperator  :  " + tm.getSimOperator());
		Log.v("TAG", "SimOperatorName  :  " + tm.getSimOperatorName());
		Log.v("TAG", "SimState  :  " + tm.getSimState() + "");
		Log.v("TAG", "PhoneType  :  " + tm.getPhoneType() + "");
		Log.v("TAG", "NetworkType  :  " + tm.getNetworkType() + "");
		Log.v("TAG", "CellLocation  :  " + tm.getCellLocation() + "");
		Log.v("TAG", "CallState  :  " + tm.getCallState() + "");
		Log.v("TAG", "SimSerialNumber  :  " + tm.getSimSerialNumber() + "");
		Log.v("TAG", "Line1Number  :  " + tm.getLine1Number() + "");

	}

}

AndroidManifest.xml


<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

注意:
getLine1Number()只有部分SIM才能得到手机号码,这个是因为移动运营商没有把手机号码的数据写入到sim卡中.
移动神州行,联通的卡是可以取到的.动感地带的取不到.

如果我们要区分SIM卡的话,可以用SIM卡序列号区分:getSimSerialNumber()。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值