接收短信存储到数据库的问题?

Jabin. 2012-08-03 11:37:42
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage message : messages) {

sb.append(message.getOriginatingAddress());

msg.append(message.getDisplayMessageBody());
}
smsDatebase smsDB = new smsDatebase(context);
Date date = new Date();
String time = "\n接收时间: " + (date.getYear() + 1900) + "年"
+ (date.getMonth() + 1) + "月" + date.getDate() + "日"
+ date.getHours() + "时" + date.getMinutes() + "分"
+ date.getSeconds() + "秒";

smsDB.insert(sb.toString(), msg.toString(), time);
当接收的短信超过70字之后,号码就会重复存储,存储的次数为(短信字数/70 )+1,为什么会这样啊,求解?
...全文
235 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jabin. 2012-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

做数据库的啊?我现在也在做,请问你有android数据库教程吗?我是新手,请指教,谢谢!
[/Quote]
http://www.sqlite.com.cn/ 这里可以看一些文章,sql 学习到http://www.w3school.com.cn/sql/index.asp
balmy 2012-08-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
S……
[/Quote]
一条短信最长是70个中文字或160个英文字符,如果超过一条是67个中文字或153个英文字符,如中英文混合就按中文算,并不是一直按70算的,至于为什么号码存了多次,感觉还是写入数据库时的逻辑没有控制好,信息都有了,楼主想怎么存还不是你自己的事,只存储一条应该是可以做到,只是要考虑对你其它的需求有没有影响
Jabin. 2012-08-04
  • 打赏
  • 举报
回复
但是短信存储的内容是正确的啊?为什么号码会重复呢?
wqf393439878 2012-08-04
  • 打赏
  • 举报
回复
做数据库的啊?我现在也在做,请问你有android数据库教程吗?我是新手,请指教,谢谢!
AMinfo 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
S……
[/Quote]

这是正常的,本来就是这样的,单条短信最长为70个字符,超过就变为(长度/70 + 1)条

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧