Android中获取手机SIM卡的各种信息
通过以下工具类方法可以获取到手机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卡的各种信息相关推荐
- android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法
本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...
- Android - xml动画,识别手势动作,代码抽取,获取手机SIM卡串号,获取联系人数据,开机广播,发送/解析短信,报警音乐
转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72878059 1.Activity的任务栈 1.类似一个木桶,每层只能放一个木块,我 ...
- Android开发之获取手机SIM卡信息
TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于访问有关设 ...
- Android中获取手机中的联系人信息
#Android中获取手机中的联系人信息 1.0.查看系统通讯录的表,表路径:data->data->com.android.providers.contacts->database ...
- [Swift]获取手机SIM卡网络运营商名称
导入框架 import CoreTelephony 获取当前运营商名称 /// 获取手机SIM卡网络运营商名称 func currentCarrierName() -> String? {var ...
- 双卡android手机SIM卡信息探索 ,获取手机 SIM卡数量和SIM卡id、iccid
废话不多,直接上干货==> 1 以下所有方法都需要在AndroidManifest.xml声明权限 <uses-permission android:name="android. ...
- android+双卡imei,以编程方式在Android中为双SIM卡检索IMEI号码
对于单个SIM,以下代码有效: TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String ...
- android 渐变卡片,手机SIM卡的进化史,从有到无,渐变虚拟eSIM卡
原标题:手机SIM卡的进化史,从有到无,渐变虚拟eSIM卡 SIM卡可以说是手机使用中不可缺少的伙伴,有了它,你的手机才可以真正意义上叫做手机,那么我现在像大家提出一个问题,你真的了解SIM卡吗?所以 ...
- android 获取sim卡,Android 获取手机SIM卡运营商
直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context con ...
- cordova插件 - 获取手机SIM卡信息(包括手机号)
插件名称:cordova-plugin-sim 地址:https://www.npmjs.com/package/cordova-plugin-sim 说明:这个插件可以从sim卡中,获取 carri ...
最新文章
- tp数组转为json_数据存储—JSON
- 一文读懂语音识别技术原理
- 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)...
- diff命令两个服务器文件,linux 比较两个文件夹不同 (diff命令, md5列表)
- tornado学习笔记day08-tornado中的异步
- UserWarning: Matplotlib is currently using agg in Object Detection API
- KMP算法中NEXT数组的作用以及代码实现
- springboot学习过程中遇到的错误集
- 2.Elasticsearch插件推荐及安装
- 常用sql语句整理:mysql
- 从3D Studio Max导入物体 Importing Objects From 3D Studio Max
- JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别
- locust工具学习笔记(三)-Tasks属性、tag修饰符、TaskSet类
- kali终端打不开以及msfconsole打不开
- 创意编程——随机(扩散限制聚集DLA)
- 爆红土味视频 是打工青年们与城市的距离
- HTML中拖动消失的球代码,js拖拽360桌面悬浮球代码
- java 不能反序列化_java – Hibernate:无法反序列化 – 无效的...
- 一个策划总监的自白:到底什么是策划?
- php过滤微信昵称的emoji表情符号,emoji表情过滤处理
热门文章
- leetcode题目--阶乘后的零 ---脑筋急转弯
- Anaconda 3执行conda update --all时产生“>10 possible package resolutions “警告信息的解决方法
- 学生为什么要上北大计算机信息学,为什么清华北大争相录取NOIP学生
- Android 获取本地音乐生成对象,获取对应audio文件中的专辑图片
- linux开启user_cmd功能记录用户所有操作指令到log message中
- Microsoft Office Project Standard 2007 产品概述
- 30网工转php,测量单位间转换的php库
- html map 地图热点
- laravel56框架报错如下:Class App\Http\Controllers\PublicMatch\PublicTakeController does not exist
- 无人驾驶-规划-混合A*