private static final String SMS_AUTHORITY = "sms";
public static final Uri SMS_CONTENT_URI = Uri.parse("content://"
+ SMS_AUTHORITY);
private void upSMSTable() {
// TODO Auto-generated method stub
Cursor smscur = CR.query(SMS_CONTENT_URI, sms_porjection, null, null,
"date");
Cursor cur = CR.query(CONTENT_URI, local_projection, "EvFlag = ?",
new String[] { String.valueOf(3) }, "EvTime");
if (smscur.getCount() > cur.getCount()) {
// Add a new record to SMS.这句可以执行到,当有新短信的时候
.....
smscur.close();
} else if (smscur.getCount() < cur.getCount())//现在的问题是根本执行不到这句,
不知道是什么原因?难道uri不同导致的?
{
// Delete a message.
}
cur.close();
} else {
// SMS Count() = cur Count()??
smscur.close();
cur.close();
}
}
短信监听第一贴
是的
可是android的短信好像没有收件箱和发件箱?因为它的短信的删除不是一条一条的,而是一个对话组的删除....
Cursor smscur = CR.query(SMS_CONTENT_URI, sms_porjection, null, null,
"date");
smscur.getCount()应该是监听收件箱和发件箱里面的短信,++++ 如果它获得的计数<我的cur.getCount()的计数++++++可是偏偏这个好像监听不了....拜托朋友们帮帮忙,提示一下....谢谢了
18 个解决方案
#1
现在好像又发现问题:
一.当我一条一条的删除短信的时候,会执行到同步删除操作,也就是当短信的数目减少时,我的程序里面也会同步的更新
二. 但是如果是一下子删除整个两个人的会话,也就是删除了大于2条的短信时,则监听不到++++无法执行到[color=#339966]else if (smscur.getCount() < cur.getCount())//[/color]
不知道是为什么?
是不是逐条删除和完整删除有区别?可是这些区别在什么地方?希望有知道的朋友解答...
一.当我一条一条的删除短信的时候,会执行到同步删除操作,也就是当短信的数目减少时,我的程序里面也会同步的更新
二. 但是如果是一下子删除整个两个人的会话,也就是删除了大于2条的短信时,则监听不到++++无法执行到[color=#339966]else if (smscur.getCount() < cur.getCount())//[/color]
不知道是为什么?
是不是逐条删除和完整删除有区别?可是这些区别在什么地方?希望有知道的朋友解答...
#2
else if (smscur.getCount() < cur.getCount())
//这里面相当于是在操作逐条进行删除的更新
{
// Delete a message.
}
cur.close();
}
else if (会话删除)
{
if(短信的计数<我的计数)
{
执行更新...//这些都该如何写呢?
}
}else {
// SMS Count() = cur Count()??
smscur.close();
cur.close();
}
}
{
// Delete a message.
}
cur.close();
}
else if (会话删除)
{
if(短信的计数<我的计数)
{
执行更新...//这些都该如何写呢?
}
}else {
// SMS Count() = cur Count()??
smscur.close();
cur.close();
}
}
#3
是不是删除一条的时候是根据短信id删除的,而删除整个会话时是按照联系人或者会话的id(如果有的话)来删除的?
另外,删除多条短息时,是不是在都删除了才执行的commit提交数据库修改?或者执行了批处理删除?
对这方面不熟悉,只能按照常理推论下,呵呵!
#4
谢谢回复,一下子删除,应该是smscur得不到count,所以..我也不知道具体原因..
#5
删除会话看到你是这样写的
1. getContentResolver().delete(
2. Uri.parse("content://sms/conversations/" + threadid,
3. "_id = " + idelete, null);
那么,监听删除的时候是不是也要监听会话的删除?
监听的uri的问题?
1. getContentResolver().delete(
2. Uri.parse("content://sms/conversations/" + threadid,
3. "_id = " + idelete, null);
那么,监听删除的时候是不是也要监听会话的删除?
监听的uri的问题?
#6
不是啊 监听是按短信的条数监听的啊 但是不知道删除会话的时候,,,会怎么回事?
#7
再顶一哈,希望有人回答,谢谢
#8
哈喽 帮帮忙~~
#9
我觉得关键问题是你如何调用upSMSTable()这个函数。如果你调用这个函数时数据库的短信并没有被删除,那自然比较数目时就会相等,因此监听就会失败,
还是你会类timer的形式去做?最好用ContentObserver去做,我觉得
还是你会类timer的形式去做?最好用ContentObserver去做,我觉得
#10
已经被删除了,但是就是监听不到,好像是会话的监听和一条条的监听有区别~
#11
upSMSTable()你这个函数怎么被调用的?timer形式去被调用的的吗?
#12
不懂你的意思~~~~~~~~~
#13
现在告诉你吧
那个会话的现在监听不了的!因为THREDS表已经给GOGLES封的了
那个会话的现在监听不了的!因为THREDS表已经给GOGLES封的了
#14
真的吗?那不是很悲剧吗?别人以会话删除的方式删除短信的话 我这边根本就监听不了,该怎么办呢???
#15
各位 拜托 知道的帮帮忙噢~~~~
#16
还是没有解决 怎么办?
#17
mark 下
#18
#1
现在好像又发现问题:
一.当我一条一条的删除短信的时候,会执行到同步删除操作,也就是当短信的数目减少时,我的程序里面也会同步的更新
二. 但是如果是一下子删除整个两个人的会话,也就是删除了大于2条的短信时,则监听不到++++无法执行到[color=#339966]else if (smscur.getCount() < cur.getCount())//[/color]
不知道是为什么?
是不是逐条删除和完整删除有区别?可是这些区别在什么地方?希望有知道的朋友解答...
一.当我一条一条的删除短信的时候,会执行到同步删除操作,也就是当短信的数目减少时,我的程序里面也会同步的更新
二. 但是如果是一下子删除整个两个人的会话,也就是删除了大于2条的短信时,则监听不到++++无法执行到[color=#339966]else if (smscur.getCount() < cur.getCount())//[/color]
不知道是为什么?
是不是逐条删除和完整删除有区别?可是这些区别在什么地方?希望有知道的朋友解答...
#2
else if (smscur.getCount() < cur.getCount())
//这里面相当于是在操作逐条进行删除的更新
{
// Delete a message.
}
cur.close();
}
else if (会话删除)
{
if(短信的计数<我的计数)
{
执行更新...//这些都该如何写呢?
}
}else {
// SMS Count() = cur Count()??
smscur.close();
cur.close();
}
}
{
// Delete a message.
}
cur.close();
}
else if (会话删除)
{
if(短信的计数<我的计数)
{
执行更新...//这些都该如何写呢?
}
}else {
// SMS Count() = cur Count()??
smscur.close();
cur.close();
}
}
#3
是不是删除一条的时候是根据短信id删除的,而删除整个会话时是按照联系人或者会话的id(如果有的话)来删除的?
另外,删除多条短息时,是不是在都删除了才执行的commit提交数据库修改?或者执行了批处理删除?
对这方面不熟悉,只能按照常理推论下,呵呵!
#4
谢谢回复,一下子删除,应该是smscur得不到count,所以..我也不知道具体原因..
#5
删除会话看到你是这样写的
1. getContentResolver().delete(
2. Uri.parse("content://sms/conversations/" + threadid,
3. "_id = " + idelete, null);
那么,监听删除的时候是不是也要监听会话的删除?
监听的uri的问题?
1. getContentResolver().delete(
2. Uri.parse("content://sms/conversations/" + threadid,
3. "_id = " + idelete, null);
那么,监听删除的时候是不是也要监听会话的删除?
监听的uri的问题?
#6
不是啊 监听是按短信的条数监听的啊 但是不知道删除会话的时候,,,会怎么回事?
#7
再顶一哈,希望有人回答,谢谢
#8
哈喽 帮帮忙~~
#9
我觉得关键问题是你如何调用upSMSTable()这个函数。如果你调用这个函数时数据库的短信并没有被删除,那自然比较数目时就会相等,因此监听就会失败,
还是你会类timer的形式去做?最好用ContentObserver去做,我觉得
还是你会类timer的形式去做?最好用ContentObserver去做,我觉得
#10
已经被删除了,但是就是监听不到,好像是会话的监听和一条条的监听有区别~
#11
upSMSTable()你这个函数怎么被调用的?timer形式去被调用的的吗?
#12
不懂你的意思~~~~~~~~~
#13
现在告诉你吧
那个会话的现在监听不了的!因为THREDS表已经给GOGLES封的了
那个会话的现在监听不了的!因为THREDS表已经给GOGLES封的了
#14
真的吗?那不是很悲剧吗?别人以会话删除的方式删除短信的话 我这边根本就监听不了,该怎么办呢???
#15
各位 拜托 知道的帮帮忙噢~~~~
#16
还是没有解决 怎么办?
#17
mark 下