无法在振铃期间检索和存储呼叫者的详细信息



当电话还在响时,我正试图将来电者的详细信息——姓名、号码和时间——存储在3个不同的数组列表中。如果来电者不在联系人中,则存储的姓名为"姓名不可用"

        //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" />

您进行了错误的测试来比较字符串。。您应该使用"equal"而不是==

这样做吗:

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

最新更新