'How to get dual sim phone call logs (Call Log Is from which Sim Card) right now facing from in api level 31
Cursor managedCursor = getActivity().getContentResolver().query(CallLog.Calls.CONTENT_URI, null, filter, null, CallLog.Calls._ID + " DESC");
String[] names = managedCursor.getColumnNames();
int subscription_id = managedCursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_ID);
int simid = managedCursor.getColumnIndex("sub_id");
int idSimId = getSimIdColumn(managedCursor);
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
int received_call = managedCursor.getColumnIndex("phone_account_address");
managedCursor.moveToFirst();
while (!managedCursor.isAfterLast()){
String simNumber = "";
String callednumber ="";
String phNumber = managedCursor.getString(number);
String callType = managedCursor.getString(type);
if (callType.equalsIgnoreCase("1")) {
if (!phNumberArray.contains(phNumber)) {
phNumberArray.add(phNumber);
String callDate = managedCursor.getString(date);
if(received_call>0){
callednumber = managedCursor.getString(received_call);
}else{
callednumber = "";
}
String callerName = getContactName(phNumber, getContext());
String callDuration = managedCursor.getString(duration);
if (subscription_id != -1) {
simID = managedCursor.getString(subscription_id);
if (simID != null) {
simID = simID.replaceAll("[^\\d.]", "");
} else {
if (simid != -1)
simID = managedCursor.getString(simid);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
