好的,伙计们,这是我获取短信的代码:

Cursor cursor = getContentResolver().query(Uri.parse(uri),
                null, CallLog.Calls.DATE + " > " + lastSmsTime, null,
                CallLog.Calls.DATE + " ASC");


类型是:

"content://sms/inbox"
"content://sms/sent"


对于通话:

String[] projection = new String[] { CallLog.Calls.NUMBER,
                CallLog.Calls.TYPE, CallLog.Calls.DURATION, CallLog.Calls.DATE };
Cursor managedCursor = getContentResolver().query(
                CallLog.Calls.CONTENT_URI, projection,
                CallLog.Calls.DATE + " > " + lastCallTime, null,
                CallLog.Calls.DATE + " ASC");


首先,我知道这是未记录的提供程序(如您所见,我使用来自另一个的列常量)。

有趣的是,这可以在多个2.3.x设备上正常运行。但是现在我在Galaxy S II(ICS 4.0.3)上尝试了此操作。现在,所有短信都在呼叫提供商中重复了。

有人遇到过这个问题吗?

UPD
我发现了相同的问题here,请继续寻找解决方案。

根据我现在所知道的UDD 2,三星现在将所有内容存储在一个日志中,因此我将尝试找到一种对日志应用程序进行反向工程的方法。

无论如何,仍在寻找解决方案以分隔短信和电话。

最佳答案

好的,这可能是解决方案,因此我将其发布:
三星日志提供商有很多专栏,其中有

logtype


据我所知,电话是100,短信是300,彩信是200。

也可以检测制造商:


  字符串man = android.os.Build.MANUFACTURER;


因此,对于三星设备,应该有单独的代码来检查日志类型。

关于android - SMS被复制为调用(三星银河S II),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11294563/

10-10 09:29