編輯:關於Android編程
由於對短信讀寫操作的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 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; }
public ArrayListgetSmsList(){ ArrayList list = new ArrayList (); SmsManager newSmsManager = SmsManager.getDefault(); try { Class> smsManagerClass = Class.forName("android.telephony.SmsManager"); Method localMethod = smsManagerClass.getMethod("getAllMessagesFromIcc",null); try { list = (ArrayList )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; }
Android 應用安裝過程:首先一個android項目,然後編譯和打包,將.java文件編譯為.class,.class編譯為.dex,將所有文件打包為一個apk,只編
1、概述開發Android的同學都知道sdk已經為我們提供了一個SQLiteOpenHelper類來創建和管理SQLite數據庫,通過寫一個子類去繼承它,就可以方便的創建
1 概述在Android中,我們常常使用PendingIntent來表達一種“留待日後處理”的意思。從這個角度來說,PendingIntent可以
上一篇小案例,完成了一個普通的通知,點擊通知啟動了一個活動。但是那裡的通知沒有加入些“靓點”,這一篇就給它加入自定義的布局,完成自定義的通知。應用