我试图将来电者的详细信息 - 姓名,号码和时间 - 存储在3个不同的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 :(得分:1)
你做错误的测试来比较字符串..你应该使用&#39; 相等&#39;而不是==
这样做:
if(name!=null && name.equals.("?")){
logName.add("Name unavailable");
}else{
logName.add(name);
}