通过以下工具类方法可以获取到手机SIM的各种信息数据!!!

package com.utils;
import android.telephony.TelephonyManager;
import com.baidu.platform.comapi.map.E;
import org.json.JSONArray;
import org.json.JSONObject;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 使用方法* TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);* SONArray simList = SimUtils.getAllSimInfo(tel);*/
public class SimUtils {public static JSONArray getAllSimInfo(TelephonyManager tel) throws Exception {Class clazz = tel.getClass();//获取能够进行反射的字段List<EMethod> list = new ArrayList<>();Map listIgnore = new HashMap<>();Method[] methods = clazz.getDeclaredMethods();for (Method method : methods) {String name = method.getName();if (!name.startsWith("get"))continue;if (listIgnore.get(name) != null)continue;listIgnore.put(name, 0);Method m1 = null;Method m2 = null;Method m3 = null;try {m1 = clazz.getDeclaredMethod(name);} catch (Exception e) {}try {m2 = clazz.getDeclaredMethod(name, int.class);} catch (Exception e) {}try {m3 = clazz.getDeclaredMethod(name, long.class);} catch (Exception e) {}if (m1 != null && ((m2 == null && m3 != null) || (m2 != null && m3 == null))) {Class c1 = m1.getReturnType();Class c2 = m2 == null ? null : m2.getReturnType();Class c3 = m3 == null ? null : m3.getReturnType();if (m2 == null) {if (c1 == null || c1 != c3)continue;} else {if (c1 == null || c1 != c2)continue;}EMethod item = new EMethod(name, m2 == null ? 1 : 0, c1);list.add(item);}}listIgnore.clear();JSONArray array = new JSONArray();for (int i = 0; i < 10; i++) {JSONObject json = new JSONObject();for (EMethod em : list) {Method method = null;Object param = null;if (em.type == 0) {method = clazz.getDeclaredMethod(em.name, int.class);param = i;} else {method = clazz.getDeclaredMethod(em.name, long.class);param = new Long(i);}if (!method.isAccessible())method.setAccessible(true);String name = em.name.substring(3);Object value = null;try {value = method.invoke(tel, param);} catch (Exception e) {//前面已经对private设置了可访问,有些仍是会报错,就无论这个了continue;}json.put(name, value);}if (json.optInt("SimState") == TelephonyManager.SIM_STATE_UNKNOWN || json.optInt("SimState") == TelephonyManager.SIM_STATE_ABSENT)continue;String imsi = json.optString("SubscriberId");if (imsi == null || imsi.length() == 0)continue;//根据imsi去重boolean repeact = false;for (int j = 0; j < array.length(); j++) {if (imsi.equals(array.optJSONObject(j).optString("SubscriberId"))) {repeact = true;break;}}if (repeact)continue;array.put(json);}return array;}static class EMethod {public String name;public int type;//0为int,1为longpublic Class returnType;//返回类型public EMethod(String name, int type, Class returnType) {this.name = name;this.type = type;this.returnType = returnType;}}
}

Android中获取手机SIM卡的各种信息相关推荐

  1. android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法

    本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...

  2. Android - xml动画,识别手势动作,代码抽取,获取手机SIM卡串号,获取联系人数据,开机广播,发送/解析短信,报警音乐

    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72878059 1.Activity的任务栈 1.类似一个木桶,每层只能放一个木块,我 ...

  3. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于访问有关设 ...

  4. Android中获取手机中的联系人信息

    #Android中获取手机中的联系人信息 1.0.查看系统通讯录的表,表路径:data->data->com.android.providers.contacts->database ...

  5. [Swift]获取手机SIM卡网络运营商名称

    导入框架 import CoreTelephony 获取当前运营商名称 /// 获取手机SIM卡网络运营商名称 func currentCarrierName() -> String? {var ...

  6. 双卡android手机SIM卡信息探索 ,获取手机 SIM卡数量和SIM卡id、iccid

    废话不多,直接上干货==> 1 以下所有方法都需要在AndroidManifest.xml声明权限 <uses-permission android:name="android. ...

  7. android+双卡imei,以编程方式在Android中为双SIM卡检索IMEI号码

    对于单个SIM,以下代码有效: TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String ...

  8. android 渐变卡片,手机SIM卡的进化史,从有到无,渐变虚拟eSIM卡

    原标题:手机SIM卡的进化史,从有到无,渐变虚拟eSIM卡 SIM卡可以说是手机使用中不可缺少的伙伴,有了它,你的手机才可以真正意义上叫做手机,那么我现在像大家提出一个问题,你真的了解SIM卡吗?所以 ...

  9. android 获取sim卡,Android 获取手机SIM卡运营商

    直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context con ...

  10. cordova插件 - 获取手机SIM卡信息(包括手机号)

    插件名称:cordova-plugin-sim 地址:https://www.npmjs.com/package/cordova-plugin-sim 说明:这个插件可以从sim卡中,获取 carri ...

最新文章

  1. tp数组转为json_数据存储—JSON
  2. 一文读懂语音识别技术原理
  3. 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)...
  4. diff命令两个服务器文件,linux 比较两个文件夹不同 (diff命令, md5列表)
  5. tornado学习笔记day08-tornado中的异步
  6. UserWarning: Matplotlib is currently using agg in Object Detection API
  7. KMP算法中NEXT数组的作用以及代码实现
  8. springboot学习过程中遇到的错误集
  9. 2.Elasticsearch插件推荐及安装
  10. 常用sql语句整理:mysql
  11. 从3D Studio Max导入物体 Importing Objects From 3D Studio Max
  12. JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别
  13. locust工具学习笔记(三)-Tasks属性、tag修饰符、TaskSet类
  14. kali终端打不开以及msfconsole打不开
  15. 创意编程——随机(扩散限制聚集DLA)
  16. 爆红土味视频 是打工青年们与城市的距离
  17. HTML中拖动消失的球代码,js拖拽360桌面悬浮球代码
  18. java 不能反序列化_java – Hibernate:无法反序列化 – 无效的...
  19. 一个策划总监的自白:到底什么是策划?
  20. php过滤微信昵称的emoji表情符号,emoji表情过滤处理

热门文章

  1. leetcode题目--阶乘后的零 ---脑筋急转弯
  2. Anaconda 3执行conda update --all时产生“>10 possible package resolutions “警告信息的解决方法
  3. 学生为什么要上北大计算机信息学,为什么清华北大争相录取NOIP学生
  4. Android 获取本地音乐生成对象,获取对应audio文件中的专辑图片
  5. linux开启user_cmd功能记录用户所有操作指令到log message中
  6. Microsoft Office Project Standard 2007 产品概述
  7. 30网工转php,测量单位间转换的php库
  8. html map 地图热点
  9. laravel56框架报错如下:Class App\Http\Controllers\PublicMatch\PublicTakeController does not exist
  10. 无人驾驶-规划-混合A*