編輯:關於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 應用安裝過程:首先一個android項目,然後編譯和打包,將.java文件編譯為.class,.class編譯為.dex,將所有文件打包為一個apk,只編
Android打造屬於自己的數據庫操作類。
1、概述開發Android的同學都知道sdk已經為我們提供了一個SQLiteOpenHelper類來創建和管理SQLite數據庫,通過寫一個子類去繼承它,就可以方便的創建
PendingIntent的內部機制
1 概述在Android中,我們常常使用PendingIntent來表達一種“留待日後處理”的意思。從這個角度來說,PendingIntent可以
Android實戰教程--第三十八話《自定義通知NotifiCation》
上一篇小案例,完成了一個普通的通知,點擊通知啟動了一個活動。但是那裡的通知沒有加入些“靓點”,這一篇就給它加入自定義的布局,完成自定義的通知。應用