我正在使用CallLog
,并将我的一个变量设置为用户拨打的联系人的CACHED_NAME
。这样可以正常工作,但是如果用户拨打了不在其联系人中的号码,我希望将该变量设置为NUMBER
值。出于某种原因,当我这样做时,我得到的结果是单个数字整数,例如“1”或“7”。这是我的代码:
Uri allCalls = Uri.parse("content://call_log/calls");
String sortOrder = CallLog.Calls.DATE;
Cursor c = managedQuery(allCalls, null, null, null, sortOrder);
while (c.moveToNext()) {
int callType = Integer.parseInt(c.getString(c
.getColumnIndex(CallLog.Calls.TYPE)));
long date = c.getLong(c.getColumnIndex(Calls.DATE));
String col1;
if (callType == CallLog.Calls.OUTGOING_TYPE
&& date > resetDate) {
col1 = c.getString(c.getColumnIndex(Calls.CACHED_NAME));
// if there is no cached name, get the number
if (col1 == null) {
col1 = String.valueOf(c.getLong(c
.getColumnIndex(Calls.NUMBER)));
}
我是否正确地说NUMBER
的值应该是用户拨打的电话号码?我知道一切都是正确的,除了我将col1
设置为数字值的最后一行。有什么想法吗?
答案 0 :(得分:1)
当您使用getLong
时,您正在使用getString
作为电话号码:
col1 = c.getString(c.getColumnIndex(Calls.CACHED_NAME));
// if there is no cached name, get the number
if (col1 == null) {
col1 = String.valueOf(c.getString(c
.getColumnIndex(Calls.NUMBER)));
}