zoukankan      html  css  js  c++  java
  • 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;
    	}
    	


  • 相关阅读:
    好用的开源库(一)——MaterialEditText
    Android开发——Notification通知的各种Style详解
    Android开发——Notification通知的使用及NotificationCopat.Builder常用设置API
    【转】Android开发笔记(序)写在前面的目录
    【转】NotificationCopat.Builder全部设置
    Git的简单的基本使用
    Android开发——BroadcastReceiver广播的使用
    【转】Android 开发规范(完结版)
    Android开发——使用intent传递对象
    【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5152821.html
Copyright © 2011-2022 走看看