Android CallLog.Calls.CACHED\如果号码未知,则会出现名称问题

Android CallLog.Calls.CACHED\如果号码未知,则会出现名称问题,android,android-contacts,Android,Android Contacts,我正在处理android设备的最新通话列表,我发现CallLog.Calls.CACHED\u NAME有一个问题 有两种情况下,最近的电话号码可能在联系人列表名称中,也可能是未知的。因此,如果姓名将存在于联系人中,那么它将显示在CallLog.Calls.CACHED_name中,但如果它是未知号码,那么它将给出什么值 因为如果我比较一下,如果缓存的名称为空,那么我会将数字作为名称,但在模拟器中它工作正常,但当我在三星galaxy ACE DUOS中安装它时,如果最近的呼叫有未知号码,那么它就

我正在处理android设备的最新通话列表,我发现CallLog.Calls.CACHED\u NAME有一个问题

有两种情况下,最近的电话号码可能在联系人列表名称中,也可能是未知的。因此,如果姓名将存在于联系人中,那么它将显示在CallLog.Calls.CACHED_name中,但如果它是未知号码,那么它将给出什么值

因为如果我比较一下,如果缓存的名称为空,那么我会将数字作为名称,但在模拟器中它工作正常,但当我在三星galaxy ACE DUOS中安装它时,如果最近的呼叫有未知号码,那么它就会崩溃

比如说,, 最近的电话是ABC:888-888-8888,XYZ:999-999-9999 那它就可以正常工作了

但是如果它是没有名字:444-444-4444 然后它就会崩溃


任何人都能看出这个问题的症结所在吗?

当我试图从没有名字的通话记录中获取电话号码时,我也遇到了同样的问题。
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=“未知”;
姓名持有人。添加(姓名);
}
否则{
名称=名称;
姓名持有人。添加(姓名);
}
}