android sim 卡短信读写

        因为对短信读写操作的api 被隐藏了 , 我们须要使用Java反射机制的学习》一文中提到的反射的方法得到隐藏API 。

这有一个用例大家能够下载http://zhushou.360.cn/detail/index/soft_id/1608427

http://download.csdn.net/detail/qgy92320/8967551

查看效果

android写sim卡短信

	/***
	 * 1)	byte[] smsc : 短信服务中心的地址,个人觉得在拷贝到SIM卡过程中能够为空。 
     * 2)	byte[] pdu : 中文翻译是协议数据单元,这个參数最为重要,一会我们会做具体地解释说明。 
     * 3)	int status : 短信存储在Icc卡上的状态。有4种状态,1是已读,3是未读,5是已发送。7是未发送。 
	 * @param smsc
	 * @param pdu
	 * @param status
	 */
	public boolean writeSMStoIcc(byte[] smsc,byte[] pdu,int status){
//		mKeyboardHelper = new ReflectionInternal(this,"android.telephony.SmsManager");
		//调用类,声明类,mKeyboardView。mPasswordEntry,为须要传递的參数
//		mKeyboardHelper.setInt("copyMessageToIcc", 0);
		boolean flag = false;
		SmsManager newSmsManager = SmsManager.getDefault();
		try {
			Class smsManagerClass = Class.forName("android.telephony.SmsManager");
			Method localMethod = smsManagerClass.getMethod("copyMessageToIcc",new Class[]{byte[].class,byte[].class,Integer.TYPE});
			Object[] arrayList = new Object[3];
			arrayList[0] = smsc;
			arrayList[1] = pdu;
			arrayList[2] = status;
			try {
				flag = ((Boolean)localMethod.invoke(newSmsManager, arrayList)).booleanValue();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				
			} catch (IllegalArgumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				
			} catch (InvocationTargetException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			Log.e("NoSuchMethodException","NoSuchMethodException :"+ e.getMessage());
			e.printStackTrace();
		} catch (ClassNotFoundException ex) {
			// TODO Auto-generated catch block
			Log.e("ClassNotFoundException","ClassNotFoundException :"+ ex.getMessage());
			ex.printStackTrace();
		}
		return flag;
	}

android 读sim卡短信

public ArrayList<SmsMessage> getSmsList(){
		ArrayList<SmsMessage> list = new ArrayList<SmsMessage>();
		SmsManager newSmsManager = SmsManager.getDefault();
		try {
			Class<?> smsManagerClass = Class.forName("android.telephony.SmsManager");
			Method localMethod = smsManagerClass.getMethod("getAllMessagesFromIcc",null);
			try {
				list = (ArrayList<SmsMessage>)localMethod.invoke(newSmsManager, null);
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalArgumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			Log.e("NoSuchMethodException","NoSuchMethodException :"+ e.getMessage());
			e.printStackTrace();
		} catch (ClassNotFoundException ex) {
			// TODO Auto-generated catch block
			Log.e("ClassNotFoundException","ClassNotFoundException :"+ ex.getMessage());
			ex.printStackTrace();
		}
		
		return list;
	}
	


原文地址:https://www.cnblogs.com/zfyouxi/p/5152821.html