2014-10-21 2 views
0

Я пытаюсь сохранить подробную информацию о вызывающем абоненте - имя, номер и время - в трех разных arraylists, пока телефон все еще звонит. Если вызывающий абонент не находится в контактах, имя сохраняется «Имя недоступно». Вот код -Невозможно получить и сохранить информацию о вызывающем абоненте во время звонка

 //code from the onReceive() function. 
     getDetails(name, inNumber); 
     telephonyService.endCall(); 
     openWhatsAppContact(inNumber, mContext); 

     saveLogName.edit().putString("logName", TextUtils.join(",", logName)).apply(); 
     saveLogNumber.edit().putString("logNumber", TextUtils.join(",", logNumber)).apply(); 
     saveLogTime.edit().putString("logTime", TextUtils.join(",", logTime)).apply(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

void getDetails(String name, String number){ 
    if(name == "?"){ 
     logName.add("Name unavailable"); 
    }else{ 
     logName.add(name); 
    } 
    Log.d(TAG, TextUtils.join(",", logName)); 
    logNumber.add(number); 
    Log.d(TAG, TextUtils.join(",", logNumber)); 
    Time now = new Time(); 
    now.setToNow(); 
    logTime.add(now.toString()); 
    Log.d(TAG, TextUtils.join(",", logTime)); 
} 

При вызове getDetails(), ничего не происходит, я знаю, что это из-за заявления журнала внутри функции. Кроме того, ни один из кода после вызова getDetails() не реализован. Что я делаю не так? Есть ли лучший способ сделать то, что я пытаюсь сделать?

AndroidManifest разрешения -

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.CALL_PHONE" android:required="true" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

Вы установили разрешения манифеста? я могу видеть разрешения? – j2emanue

+0

@ j2emanue Сделано. Код работал нормально, прежде чем добавить функцию 'getDetails()'. Он отклонил призывы по своему усмотрению. Я отредактировал описание и добавил разрешения, как вы просили. – Slay

+0

Вы в конечном итоге его исправили? – j2emanue

ответ

1

ваш делать неправильный тест для сравнения строк ..you должны использовать 'равное' вместо ==

сделать это следующим образом:

if(name!=null && name.equals.("?")){ 
     logName.add("Name unavailable"); 
    }else{ 
     logName.add(name); 
    } 
+1

совет: 'if ("? ". Equals (name))' удаляет необходимость в 'null' check – weston

Смежные вопросы