通过反射机制,获得双卡双待机器的IMEI、IMSI、电话号码。
2016-01-28 14:39
537 查看
在android 5.0之前,获得双卡相关信息,非常麻烦,不同的平台,有不同的实现方法,原生android不支持。
从android5.0开始,原始android已经支持双卡双待,例如IMEI信息:可以通过:方法实现如下:
但是直接调用的发现,没有此方法。
仔细查看,发现,这个是隐函数,看说明:
那么直接反射法调用吧:
TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
Class clazz = manager.getClass();
Method getImei=clazz.getDeclaredMethod("getImei",int.class);//(int slotId)
//获得IMEI 1的信息:
getImei.invoke(manager, 0);
//获得IMEI 2的信息:
getImei.invoke(manager, 1);
同理,获得IMSI,采用:
Method getImsi=clazz.getDeclaredMethod("getSubscriberId",int.class).
但为什么不用long.class ,而采用int.class,有点奇怪。。。
获得,电话号码,采用:
Method getPhoneNumber=clazz.getDeclaredMethod("getLine1NumberForSubscriber",int.class)
反射机制,非常值得学习和思考,第一次使用,纪念一下!
具体反射的参考:
侯捷谈Java反射机制
/article/7702512.html
http://www.blogjava.net/zh-weir/archive/2011/03/26/347063.html
从android5.0开始,原始android已经支持双卡双待,例如IMEI信息:可以通过:方法实现如下:
public String getImei(int slotId) { 637 long[] subId = SubscriptionManager.getSubId(slotId); 638 try { 639 return getSubscriberInfo().getImeiForSubscriber(subId[0]); 640 } catch (RemoteException ex) { 641 return null; 642 } catch (NullPointerException ex) { 643 return null; 644 } 645 }
但是直接调用的发现,没有此方法。
仔细查看,发现,这个是隐函数,看说明:
/** 628 * Returns the IMEI. Return null if IMEI is not available. 629 * 630 * <p>Requires Permission: 631 * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} 632 * 633 * @param slotId of which deviceID is returned 634 */ 635 /** {@hide} */
那么直接反射法调用吧:
TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
Class clazz = manager.getClass();
Method getImei=clazz.getDeclaredMethod("getImei",int.class);//(int slotId)
//获得IMEI 1的信息:
getImei.invoke(manager, 0);
//获得IMEI 2的信息:
getImei.invoke(manager, 1);
同理,获得IMSI,采用:
Method getImsi=clazz.getDeclaredMethod("getSubscriberId",int.class).
但为什么不用long.class ,而采用int.class,有点奇怪。。。
获得,电话号码,采用:
Method getPhoneNumber=clazz.getDeclaredMethod("getLine1NumberForSubscriber",int.class)
反射机制,非常值得学习和思考,第一次使用,纪念一下!
具体反射的参考:
侯捷谈Java反射机制
/article/7702512.html
http://www.blogjava.net/zh-weir/archive/2011/03/26/347063.html
相关文章推荐
- linux 配置ip
- 多线程——线程同步互斥(synchronized)
- <2016-1-28>
- 多线程——线程同步互斥(synchronized)
- 移动开发 相关 备忘
- Dragon of Loowater(贪心)
- Android线程和Handler基础入门
- Unity3d--Transform
- Cocos2d-x 3.0final手机游戏开发视频教程2014 - 自学编程 -(陆续更新中)
- 谈谈移动端屏幕适配的几种方法
- 二、Lua迭代器与泛型for
- iOS之清除缓存
- Linux学习之CentOS(二十一)--Linux系统启动详解
- bat批处理笔记——修改文件类型
- 开发笔记(杂)
- 雷达扫描
- 利用maven将项目依赖的jar提取到指定文件夹
- cracking the coding interview 4th-笔记-Tips
- 转载_关于MTK socket编程的一些经验
- Android文件资源(raw/data/asset)的存取