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线程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)