MTK 7.1 定時傳送簡訊功能
阿新 • • 發佈:2018-12-14
此功能的主要設計思路是:
在簡訊新增附件的list列表中新增一個定時傳送簡訊的選項,使用者可以通過新增定時簡訊來設定簡訊要傳送出去的時間,定時簡訊傳送出去後,後臺定時器會根據使用者設定的時間進行定時判定,然後再重新發送簡訊。
關鍵技術:
1 定時簡訊時間的設定判斷 (SetTimeSendMms.java)
2 在手機重啟時,簡訊後臺會接收開機廣播,重新啟動定時器定時
3 設定的定時簡訊儲存到新建的資料庫中(SetTimerMmsDatabase.java)
4 傳送定時簡訊會呼叫系統的介面smsManager.sendTextMessage重新發生簡訊
以下是詳細的程式碼實現(由於部分檔案程式碼太過零散,單條貼出來太過混亂,不能做到參考和分析,所以將修改的具體檔案貼出來,別且程式碼裡有相關問題的備註,關鍵字請搜尋“ [email protected] 20161215”)
有專門寫的文件可以下載參考。https://download.csdn.net/download/m1126125223/10680960
1、新增定時簡訊
Mms/src/com/android/mms/ui/ComposeMessageActivity.java;程式碼太多未標出
Mms/src/com/android/mms/ui/AttachmentTypeSelectorAdapter.java
public static final int ADD_VCALENDAR = 8;
//[email protected] 20161215 begin
public static final int ADD_TIMER = 9;
// [email protected] 2015.07.29 end
------
protected static List<IconListItem> getData(int mode, Context context) {
//[email protected] 20161215 begin
List<IconListItem> data;
if(android.os.SystemProperties.get("ro.sms.time.send").equals("1")){
data = new ArrayList<IconListItem>(9);
}else{
data = new ArrayList<IconListItem>(8);
}
// [email protected] 20161215 end
------
if ((mode & MODE_WITH_VCALENDAR) == MODE_WITH_VCALENDAR) {
addItem(data, context.getString(R.string.attach_vcalendar),
R.drawable.ic_vcalendar_attach_menu, ADD_VCALENDAR);
}
}
//[email protected] 20161215 begin
if(android.os.SystemProperties.get("ro.sms.time.send").equals("1")){
addItem(data, context.getString(R.string.attach_timer),
R.drawable.ic_attach_timer_holo_light, ADD_TIMER);
}
//[email protected] 20161215 end
2、彈出繪製的時間選擇器
Mms/src/com/android/mms/ui/SetTimeSendMms.java 程式碼太多未標出
Mms/src/com/android/mms/ui/SetTimeSendMmsUtil.java 程式碼太多未標出
3、設定簡訊定時的時間,併發送
Mms/src/com/android/mms/ui/MessageListItem.java 程式碼太多未標出
Mms/src/com/android/mms/transaction/SetATimerMmsReceiver.java 程式碼太多未標出
Mms/src/com/android/mms/transaction/SetMmsTimerAlarmReceiver.java 程式碼太多未標出
//定時簡訊重新發送
Ms/src/com/android/mms/transaction/SetTimerMmsDatabase.java 程式碼太多未標出
//定時簡訊和時間的資料庫
Mms/src/com/android/mms/transaction/SmsReceiverService.java 程式碼太多未標出
Mms/src/com/android/mms/transaction/MessagingNotification.java
//設定傳送的定時簡訊的狀態
NotificationManager notificationMgr = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);
if (isDownload) {
//[email protected] 20161215 begin
if(android.os.SystemProperties.get("ro.sms.time.send").equals("1")){
Log.d(TAG, "next is to show failed mms notification !!!");
if(com.android.mms.ui.SetTimeSendMmsUtil.is_timer_mms == true){
Log.e("luoyalong01", "this mms is timer send , not show the notification !!!");
}else{
notificationMgr.notify(MESSAGE_FAILED_NOTIFICATION_ID, notification);
}
} else {
notificationMgr.notify(MESSAGE_FAILED_NOTIFICATION_ID, notification);
}
}
}
//[email protected] 20161215 begin
4其他相關檔案配置
Mms/AndroidManifest.xml
Mms/res/drawable-xhdpi/
Mms/res/layout/message_list_item_send.xml
等。。。