1. 程式人生 > >MTK 7.1 定時傳送簡訊功能

MTK 7.1 定時傳送簡訊功能

此功能的主要設計思路是:
在簡訊新增附件的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
等。。。