INTRO:
我正在创建一个应用程序,将呼叫重定向到另一个号码,然后按键拨打实际的目标号码。 例如:每次拨打外国号码都可以说" +46 123 4567"它实际上会重定向到本地号码" +1 555 1234"并在2秒后拨打国外号码作为音调。暂停。
通话结束后,我使用CallLog.Calls更新通话记录,以便通话记录显示实际目标号码(不是本地代理)。
一切正常,我的Nexus 5和所有仿真器都按照我希望的方式运行。
问题:
但是在某些三星设备上(特别是4.2.2 Galaxy S2 +(GT-I905P)),会出现问题:
如果我打电话给一个英国联系人,之后我打电话给SE(瑞典),请将这两个联系在三星通话记录中组合在一起。因此,而不是看到两个单独的通话记录:
我只看到
好像我两次打电话给瑞典号码,但那不是真的。很明显,三星仍在使用代理号码对呼叫进行分组,并在分组呼叫时忽略CallLog.Calls。
当我检查CallLog.Calls的输出时,它应该是: (按DATE Ascending排序时,CallLog.Calls的最后两行:
id:25261 name:Test Uk number:00446342845 duration:2 new:1 date:1409833561100
id:25262 name:Test SE number:004629564647 duration:3 new:1 date:1409833582098
我如何更新通话记录:
// get Log ordered by date, so that the newest is the last entry:
Cursor cursor = context.getContentResolver()
.query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DATE);
cursor.moveToLast();
// get a field unique value from the cursor so that I know which field to update:
// (should probably use _ID instead of date)
long date = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE));
ContentValues cv = new ContentValues();
cv.put(CallLog.Calls.NUMBER, destinationNumber); // update the number
context.getContentResolver().update(CallLog.Calls.CONTENT_URI, cv,
CallLog.Calls.DATE + " = ?"
, new String[]{String.valueOf(date)});
所以问题是: 三星如何对这些电话进行分组?我该怎么做才能解决这个问题?
答案 0 :(得分:0)
三星如何对这些电话进行分组?
我认为三星的通话记录显示并非直接来自CallLog
,至少部分是这样。没有特别要求呼叫记录仅基于CallLog
提供商的内容。
我该怎么做才能解决这个问题?
AFAIK,你无能为力。三星的拨号应用程序是三星的,他们可以显示他们想要的任何数据,无论他们想要什么。
答案 1 :(得分:0)
根据同事的建议,我实际上通过删除并插入而不是更新来解决了这个问题。现在,三星拨号器将呼叫分组正确。