大佬教程收集整理的这篇文章主要介绍了android – 如何在“content:// sms / draft”中插入草稿后更新sms线程,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
ContentValues values = new ContentValues(); values.put("address",receiver2); values.put("body",body2); values.put("date",String.valueOf(System.currentTimeMillis())); values.put("type","3"); values.put("thread_id",thread_id); getContentResolver().insert(Uri.parse("content://sms/draft"),values);
如果没有与上面地址的任何对话,thread_id为0,否则它是该线程的id.
当我运行此代码时,草稿确实已保存,但本机短信客户端(股票android 4.0.3)中的线程未更新为“草稿”[我可以看到草稿邮件正文,但没有“草稿”标签就可以了.我必须打开 – 关闭线程,以便标记为标记].我已经在某处读到了线程无法正确更新的问题.如何强制更新线程,以便在所有客户端中显示正常?
编辑:
阅读完答案后,我已经更新了我的代码,但问题仍然存在.我在下面添加了一个截图,因为当我写下我的问题时,我很匆忙而且写得不够清楚.
protected void save_draft(String[] recipients,String body) { Uri threadIdUri = Uri.parse("content://mms-sms/threadID"); Uri.builder builder = threadIdUri.buildUpon(); for (String recipient : recipients) { builder.appendQueryParameter("recipient",recipient); } Uri uri = builder.build(); Long thread_id = get_thread_id(uri); Log.d("thread_id",thread_id + " "); ContentValues values = new ContentValues(); values.put("body",body); values.put("date",3); values.put("thread_id",values); //^tried "content://sms/" as well,but got the same result } private Long get_thread_id(Uri uri) { long threadId = 0; cursor cursor = getContentResolver().query(uri,new String[] { "_id" },null,null); if (cursor != null) { try { if (cursor.moveToFirst()) { threadId = cursor.getLong(0); } } finally { cursor.close(); } } return threadId; }
a busy cat http://oi46.tinypic.com/2mnkoqq.jpg
如您所见,在我通过上面的代码制作的草稿旁边没有“草稿”标签.
首先,如前所述,“草稿”提示未出现在Native SMS应用程序中的事实不应该困扰任何人.没有什么可以做的,它只是Native SMS应用程序的工作方式.特别是在应用程序启动时初始化缓存,保存包含草稿的线程的线程ID.草稿缓存仅从应用程序本身更新,而不是从sms表中的实际更改更新
对于保存草案部分,这里是正确保存草稿的代码段:
public static final Uri CONTENT_URI = Uri.parse("content://sms/draft"); public static Uri addDraft(ContentResolver resolver,String address,String body,String subject,Long date,long threadId) { ContentValues values = new ContentValues(6); values.put(ADDRESS,address); if (date != null) { values.put(DATE,datE); } values.put(READ,Integer.valueOf(1)); values.put(SUBjeCT,subject); values.put(BODY,body); if (threadId != -1L) { values.put(THREAD_ID,threadId); } return resolver.insert(CONTENT_URI,values); }
注意:草稿邮件可能包含也可能不包含邮件收件人的地址.草稿保存在线程上(一个线程可以包含许多收件人)
虽然根本没有记录sms数据库,但您可以从AOSP获取Telephony类,并查看如何添加/删除消息以及处理有关sms和mms的各种任务.
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/provider/Telephony.java
以上是大佬教程为你收集整理的android – 如何在“content:// sms / draft”中插入草稿后更新sms线程全部内容,希望文章能够帮你解决android – 如何在“content:// sms / draft”中插入草稿后更新sms线程所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。