Android CallLog.Calls.CACHED\如果号码未知,则会出现名称问题
我正在处理android设备的最新通话列表,我发现CallLog.Calls.CACHED\u NAME有一个问题 有两种情况下,最近的电话号码可能在联系人列表名称中,也可能是未知的。因此,如果姓名将存在于联系人中,那么它将显示在CallLog.Calls.CACHED_name中,但如果它是未知号码,那么它将给出什么值 因为如果我比较一下,如果缓存的名称为空,那么我会将数字作为名称,但在模拟器中它工作正常,但当我在三星galaxy ACE DUOS中安装它时,如果最近的呼叫有未知号码,那么它就会崩溃 比如说,, 最近的电话是ABC:888-888-8888,XYZ:999-999-9999 那它就可以正常工作了 但是如果它是没有名字:444-444-4444 然后它就会崩溃Android CallLog.Calls.CACHED\如果号码未知,则会出现名称问题,android,android-contacts,Android,Android Contacts,我正在处理android设备的最新通话列表,我发现CallLog.Calls.CACHED\u NAME有一个问题 有两种情况下,最近的电话号码可能在联系人列表名称中,也可能是未知的。因此,如果姓名将存在于联系人中,那么它将显示在CallLog.Calls.CACHED_name中,但如果它是未知号码,那么它将给出什么值 因为如果我比较一下,如果缓存的名称为空,那么我会将数字作为名称,但在模拟器中它工作正常,但当我在三星galaxy ACE DUOS中安装它时,如果最近的呼叫有未知号码,那么它就
任何人都能看出这个问题的症结所在吗?当我试图从没有名字的通话记录中获取电话号码时,我也遇到了同样的问题。
CallLog.Calls.CACHED\u NAME
没有返回任何值,甚至没有返回null。
过了一会儿,我用这个光标解决了这个问题:
Cursor c1 = SetStatsView.this.managedQuery(CallLog.Calls.CONTENT_URI,
new String[]{CallLog.Calls.CACHED_NAME,
CallLog.Calls.NUMBER, CallLog.Calls.DATE},
CallLog.Calls.CACHED_NAME+" is null", null, null);
它只返回没有联系人姓名的号码。我已经按照下面提到的方法完成了这项工作。您不需要创建新的查询,只需使用一个条件来处理null值,请参见下面的代码
Cursor mCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null,null,null);
String Name;
List<String>NameHolder=new ArrayList<String>();
int nameValue=mCursor.getColumnIndex(CallLog.Calls.CACHED_NAME);
while (mCursor.moveToNext()){
String name=mCursor.getString(nameValue);
if(name==null){
Name="Unknown";
NameHolder.add(Name);
}
else {
Name=name;
NameHolder.add(Name);
}
}
Cursor mCursor=managedQuery(CallLog.Calls.CONTENT_URI,null,null,null);
字符串名;
ListNameHolder=新的ArrayList();
int nameValue=mCursor.getColumnIndex(CallLog.Calls.CACHED_NAME);
while(mCursor.moveToNext()){
String name=mCursor.getString(nameValue);
if(name==null){
Name=“未知”;
姓名持有人。添加(姓名);
}
否则{
名称=名称;
姓名持有人。添加(姓名);
}
}