好的,伙计们,这是我获取短信的代码:
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) 上试过了。现在,所有 SMS 都复制在调用提供商中。
有人遇到过这个问题吗?
UPD 我发现了同样的问题 here ,继续寻找解决方案。
UDD 2 据我所知,三星现在将所有内容都存储在一个日志中,因此我将尝试找到一种对日志应用程序进行逆向工程的方法。
无论如何,仍在寻找分离短信和电话的解决方案。
最佳答案
好的,这可能是解决方案,所以我将其发布: Samsung logs provider 有很多列,其中有
logtype
据我所知,通话是 100,短信是 300,彩信是 200。
也可以检测制造商:
String man = android.os.Build.MANUFACTURER;
因此,对于三星设备,应该有单独的代码来检查日志类型。
关于android - 短信被复制为通话(三星 galaxy S II),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11294563/