'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