標籤:android api java icc sim
由於對簡訊讀寫操作的api 被隱藏了 , 我們需要使用《Java反射機制的學習》一文中提到的反射的方法得到隱藏API 。這有一個用例大家可以下載http://zhushou.360.cn/detail/index/soft_id/1608427
查看效果
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 blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (NoSuchMethodException e) {// TODO Auto-generated catch blockLog.e("NoSuchMethodException","NoSuchMethodException :"+ e.getMessage());e.printStackTrace();} catch (ClassNotFoundException ex) {// TODO Auto-generated catch blockLog.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 blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (NoSuchMethodException e) {// TODO Auto-generated catch blockLog.e("NoSuchMethodException","NoSuchMethodException :"+ e.getMessage());e.printStackTrace();} catch (ClassNotFoundException ex) {// TODO Auto-generated catch blockLog.e("ClassNotFoundException","ClassNotFoundException :"+ ex.getMessage());ex.printStackTrace();}return list;}