基于android原生短信app实现定时发短信功能

基于android 8.1 MtkMms,vendor/mediatek/proprietary/packages/apps/Mms/进行实现的
一个思路是参考草稿箱的数据库结构,新建一个类似草稿箱的类型timer,定时发送时先把短信内容标记成timer类型存入数据库,
到设定的时间后再从数据库中取出timer类型的短信内容发送出去,这种方式需要修改数据库新增一个timer类型,而且在发送的短信列表要读取timer类型的短信进行显示.

其实有更方便的方式实现,通过观察短信数据库/data/user_de/0/com.android.providers.telephony/databases/mmssms.db中sms表的type类型,可以发现除了有inbox/outbox/draft的短信类型,还有一种queue的类型,通过阅读短信的代码,发现短信发送时会先将短信标记成queue类型存入数据库,然后从数据库中读取一条
queue类型的短信标记成outbox类型发送出去,然后再从数据库中读取下一条queue类型的短信进行发送,直到数据库中没有queue类型的短信。

这样我们就可以在短信标记成queue类型存入数据库时加入一个定时字段,然后在读取queue类型的短信时判断定时字段的时间,通过AlarmManager设置定时。定时字段我们也不用修改数据库,可以直接使用sms表的date_sent字段,这个字段用来存储收到短信的时间,对于发送短信没有用都是0.

发送短信插入定时的逻辑在SmsMessageSender.java, 读取queue类型短信进行发送的逻辑在SmsReceiverService.java,通过处理SmsReceiverService.ACTION_SEND_MESSAGE广播来完成
patch如下

diff --git a/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml b/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml
index a2a0382..25a46f0 100755
--- a/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml
+++ b/mediatek/proprietary/packages/apps/Mms/AndroidManifest.xml
@@ -772,6 +772,13 @@
             android:launchMode="singleTask"
             android:theme="@style/MmsTheme"
             android:excludeFromRecents="true"/>
+        <!-- fangao cyj add for timer mms start -->
+        <activity android:name="com.android.mms.ui.DateTimePickerActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:label="@string/timer_select_time"
+            android:launchMode="singleTask"
+            android:excludeFromRecents="true"/>
+        <!-- fangao cyj add for timer mms end -->
         <provider
             android:name="android.support.v4.content.FileProvider"
             android:authorities="@string/contacts_file_provider_authority"
diff --git a/mediatek/proprietary/packages/apps/Mms/res/drawable-xxxhdpi/ic_timer_date.png b/mediatek/proprietary/packages/apps/Mms/res/drawable-xxxhdpi/ic_timer_date.png
new file mode 100644
index 0000000..95f26cc
Binary files /dev/null and b/mediatek/proprietary/packages/apps/Mms/res/drawable-xxxhdpi/ic_timer_date.png differ
diff --git a/mediatek/proprietary/packages/apps/Mms/res/drawable/date_time_picker_bg.xml b/mediatek/proprietary/packages/apps/Mms/res/drawable/date_time_picker_bg.xml
new file mode 100755
index 0000000..9a89e21
--- /dev/null
+++ b/mediatek/proprietary/packages/apps/Mms/res/drawable/date_time_picker_bg.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true"
+        android:drawable="@color/timer_button_pressed_bg"
+        />
+    <item
+        android:drawable="@color/timer_button_bg"
+        />
+
+</selector>
diff --git a/mediatek/proprietary/packages/apps/Mms/res/layout-finger-1080X720/compose_message_activity.xml b/mediatek/proprietary/packages/apps/Mms/res/layout-finger-1080X720/compose_message_activity.xml
index c38ce83..ee0f4fc 100755
--- a/mediatek/proprietary/packages/apps/Mms/res/layout-finger-1080X720/compose_message_activity.xml
+++ b/mediatek/proprietary/packages/apps/Mms/res/layout-finger-1080X720/compose_message_activity.xml
@@ -177,7 +177,28 @@
                         android:layout_height="wrap_content"/>
                 </view>
             </ScrollView>
-
+                    <!-- fangao cyj add start -->
+            <LinearLayout
+                android:id="@+id/date_send_layout"
+                android:orientation="horizontal"
+                android:visibility="gone"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+               <TextView
+                    android:id="@+id/date_send_text"
+                    android:paddingLeft="4dip"
+                    android:paddingTop="6dip"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:textColor="#ff000000"
+                    />
+                <ImageView
+                    android:id="@+id/date_send_delete"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/ic_delete_file_attachment"/>
+            </LinearLayout>
+                    <!-- fangao cyj add end -->
             <LinearLayout
                 android:id="@+id/bottom_panel"
                 android:orientation="horizontal"
diff --git a/mediatek/proprietary/packages/apps/Mms/res/layout/date_time_picker.xml b/mediatek/proprietary/packages/apps/Mms/res/layout/date_time_picker.xml
new file mode 100644
index 0000000..ab3f652
--- /dev/null
+++ b/mediatek/proprietary/packages/apps/Mms/res/layout/date_time_picker.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2008 Esmertec AG.
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    
+    <Button
+        android:id="@+id/dateButton"
+        android:layout_width="match_parent"
+        android:layout_height="40dip"
+        android:layout_marginTop="20dip"
+        android:text="year-month-day"
+        android:textSize="18dip"
+        android:background="@drawable/date_time_picker_bg"
+        android:onClick="pickSendDate"
+        />
+    
+    <Button
+        android:id="@+id/timeButton"
+        android:layout_below="@id/dateButton"
+        android:layout_width="match_parent"
+        android:layout_height="40dip"
+        android:layout_marginTop="1dip"
+        android:text="hour:minute"
+        android:textSize="18dip"
+        android:background="@drawable/date_time_picker_bg"
+        android:onClick="pickSendTime"
+        />
+    
+    <DatePicker
+        android:id="@+id/datePicker"
+        android:layout_below="@id/timeButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="20dp"
+        android:textColor="#ff000000"
+        android:startYear="2019"
+        android:endYear="2030"
+        android:datePickerMode="spinner"
+        android:visibility="gone"
+        />
+        
+    <TimePicker
+        android:id="@+id/timePicker"
+        android:layout_below="@id/timeButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:textColor="#ff000000"
+        android:layout_marginTop="20dp"
+        android:timePickerMode="spinner"
+        android:visibility="gone"
+        />
+    <LinearLayout
+        android:layout_marginTop="220dip"
+        android:layout_below="@id/datePicker"
+        android:orientation="horizontal"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content">
+    <Button
+        android:id="@+id/cancelButton"
+        android:layout_weight="1"
+        android:layout_width="fill_parent"
+        android:layout_height="match_parent"
+        android:text="@string/Cancel&

AndroidSMSApp:一个用于接收特定号码短信的安卓应用程序
06-28
安卓短信应用 一个用于接收特定号码短信的安卓应用程序。
Android自动发送短信源程序
03-16
摘要:Java源码,Android源码,发送短信  Android编程实现手机在需要时自动发送短信功能,注意这个功能为了保护用户隐私,要谨慎使用。在程序实现时,指定手机号码,指定消息内容,通过预定代码实现自动发送短信功能,发送成功给出提示,接受者的手机将显示一条内容为“这条短信是自动发送的”手机短信
android 4.0 原生短信,Android 4.0 短信发不出去解决办法
weixin_34588509的博客
05-25 680
我的Nexus S 年前就刷成4.0 了,昨天因为手机流量太大,花了我100块钱,我去看了是自己的手机Exchange服务浪费了大量的流量,但是不知道是为什么,于是昨天晚上用*#4636#*#*去查看,弄了弄神马DNS检查之类的,之前也没注意,今天早晨发现自己短信发不出去了,手机重启了也不照,短信限制也提高了,而且可以收到短信但是发不出去,午饭回来去网上查了下资料原来是SMSC号码设置错了。其实这...
android定时发送短信消息
未来很长,但我会努力的走下去。
04-23 1945
android定时发送消息主要是用到TimeCount来实现的,由后台发送消息到手机的短信中进行操作的。
Android实现发送短信功能
是阿超
06-26 1315
使用Android实现发送短信,可自定义联系人自定义短信内容
Android系统自带App分析(短信App
cwjxiuxing的专栏
04-04 1377
博客园|2013-09-24 10:28|3748次浏览|Android系统(18)系统分析(1)0 Android操作系统本身就是一个巨大的开源软件仓库,熟悉它既可以了解到Android系统的设计框架,也可以获得高效的应用程序编写方式。本文所分析的源码来自于Google官方的AOSP源码4.0.1_r1,手机的Android版本是CM 4.2.2。对于Android系统分析而言,手机的
Android例子源码可以定时批量发送短信短信时光机.rar
07-10
Android例子源码可以定时批量发送短信短信时光机是一个可以自定义定时批量短信发送例子源码(类似于短信时光机),编辑的短信可以一键选择多个联系人进行定时发送,批量发送祝福短信这种情况在节假日是普遍存在的,如果再加上一个定时功能就能实现把未来一年或者N年的祝福短信定时在节假日的时候发出去(前提是有话费),例子还有查看编辑和删除预定短信功能
android 实现发送短信功能
热门推荐
72的博客
07-04 2万+
离职五天左右 学习了一些基础理论并用于实践,也算是学到了点东西 1.实现短信的发送功能 在学习的视频里面发现了这个发送短信功能实现 就好奇写了一个小demo 先看一下页面的效果吧 很简单的布局 两个输入框 一个按钮 看一下具体的实现效果emmmm 模拟器上看不出来效果 骚等.... 点击发送短信 提示了发送成功 看一下能否接收到短信呢? 那就一起来看一下吧 成...
基于MQTT的校园新闻APP,原生Android项目源码.zip
02-06
基于MQTT的校园新闻APP,原生Android项目源码.zip 下载即用,项目完整,确保可以直接运行。 基于MQTT的校园新闻APP,原生Android项目源码.zip 下载即用,项目完整,确保可以直接运行。基于MQTT的校园新闻APP,原生...
基于android原生的校园二手交易app
08-08
基于android原生的校园二手交易app
基于Android的安卓TV原生Webview打包设计源码
04-08
安卓TV原生Webview打包 - 基于Android开发,包含55个文件,如PNG、XML、JAVA、GITIGNORE、GRADLE、APK、PROPERTIES、SER和LICENSE等。该项目提供了一个安卓TV原生Webview打包的解决方案,通过Java语言实现,为用户...
基于android原生开发的混合电影app源码(带后端源码).zip
06-18
基于android原生开发的混合电影app源码(带后端源码).zip 【资源介绍】 基于android原生开发的混合电影app,后端采用springboot+mybatis+mysql开发,有react-native和flutter版本,参见个人主页springboot和react-...
uni-app调用Android原生可以实现通信及打开WiFi
01-13
uni-app调用Android原生可以实现通信及打开WiFi
js原生发送短信案例
weixin_45730243的博客
12-24 324
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input .
越狱开发之iPhone原生短信hook
miemie1320的专栏
07-20 3304
一直在研究iphone上的短信,想在原生短信上面做一些修改,研究了一段时间,现在部分讲解给大家,希望对大家有所帮助。 我主要是对原生短信进行hook操作,捕捉到系统的一些类来进行自己的功能操作。 大家打开iphone的framework的头文件可以看到有个ChatKit,这个framework里面就包含了很多关于原生短信运行所用到的类,例如CKSMSService.h 和CK
Android定时发送短信完整详细示例
谷哥的小弟
03-06 3132
MainActivity如下: package cc.testsms; import java.util.Calendar; import java.util.Locale; import android.app.Activity; import android.app.AlarmManager; import android.app.DatePickerDialog; import andr
Android点击自动发送短信,在android中发送自动短信
weixin_36206388的博客
05-25 711
我想开发一个短信应用程序,它在收到短信时用自定义文本发送自动短信到“短信发送者”。 首先,我创建了广播接收器类在android中发送自动短信public class MyBroadCastReceiver extends BroadcastReceiver {private final String MSG_BODY="Thank you for contact we will contact u...
Android 5.0 Default SMS App以及运营商授权SMS App
weixin_33947521的博客
06-01 278
已同步更新至个人blog:http://dxjia.cn/2015/08/android-5-default-sms-app/     题外话:博友们有没有好用的写博客客户端推荐啊,cnblogs推荐的windows live writer和word都试过,都不是很好用啊,本地看着还可以,但发布出来排版就不是那么好看了。   正题:   Android短信的接收是这样的一个过程: ...
一个c语言编写的sock5代理工具.zip
最新发布
06-13
一个c语言编写的sock5代理工具
android原生短信源码
11-13
同时,我们也可以基于原生短信源码进行二次开发,实现自定义的短信应用或扩展功能。 总而言之,Android原生短信源码是Android系统中自带的短信应用的源代码,通过阅读和理解该源码,我们可以了解和学习Android短信...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 100多本书籍最新地址(bbs.theithome.com变成theithome.net ) 12777
  • android实现网络防火墙控制app访问wifi/移动数据网络 7942
  • 基于android原生联系人app实现新建联系人时添加生日字段,并且插入日历提醒 4594
  • 算法4第4章无向图/拓扑排序讲解 3044
  • 4412裸机程序之UART串口 3030

分类专栏

  • 4412裸机 10篇
  • android 3篇
  • 计算机 1篇
  • 算法 21篇

最新评论

  • 100多本书籍最新地址(bbs.theithome.com变成theithome.net )

    不会飞的IronMan: 已经变成了日本的网站了

  • 基于android原生联系人app实现新建联系人时添加生日字段,并且插入日历提醒

    shutdown -d -t ∞: 哥们解决没,我最近也有这个需求,能给个解决方法吗,求!!!

  • 100多本书籍最新地址(bbs.theithome.com变成theithome.net )

    辇道增七: 已经进不去了.....

  • 100多本书籍最新地址(bbs.theithome.com变成theithome.net )

    二进制怪兽: 地址找不到了

  • 算法4第3章红黑树及习题讲解

    莫小橙: 删除操作容易理解,感谢解惑!

最新文章

  • 算法4第6章 B+树讲解
  • 算法4第6章 网络流算法/FordFulkerson算法/增广路径算法讲解
  • 算法4第6章后缀数组讲解
2019年25篇
2015年11篇
2012年1篇
2010年4篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网杨姓 孩子取名起名大全起名按照八字还是周易南宁起名起小名字12生肖图片起名三才99小说八字起名网免费卢起名三个字女孩嘿!奔奔五行周易起名家访心得中国医生在线观看甘姓起名称女孩名字姓浅起名神医嫡女宠上天牌子起名商标起名大全沈浪和苏若雪最新章节紫霞仙子超级好牙刷打一成语中文起英文名合作社起叫什么名字好2019年猪宝起名字大全3dmax2009牛年祝福知否知否应是绿肥红瘦在线观看给姓秦的女孩起名字母婴中心起名起英文名网免费取名大全英语机构起名湖北经视淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化