呼叫日志,双卡双待的Andr​​oid设备 [英] Call logs for dual sim android device

查看:248
本文介绍了呼叫日志,双卡双待的Andr​​oid设备的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是下面的code拿到这是工作非常细的单SIM设备的通话记录的详细信息,但是当涉及到​​双卡的问题就出现了。我试图找到从双卡设备获取日志变通。

I am using the below code to get the call log details which is working very fine for single SIM device, but the problem arises when it comes to the DUAL sim. I am trying to find work around for getting logs from dual sim device.

/**
     * Get All Call Logs details as JSON
     * 
     * @param context
     */
    @SuppressLint("SimpleDateFormat")
    private void getInitialCallDetailsAsJSON() {
        // Print dates of the current week starting on Monday
        DateFormat df = new SimpleDateFormat("dd-MMM-yyyy hh:mm aa",
                Locale.getDefault());

        final Uri contacts = CallLog.Calls.CONTENT_URI;
        final Cursor managedCursor = getContentResolver().query(contacts, null,
                null, null, null);
        final int name = managedCursor
                .getColumnIndex(CallLog.Calls.CACHED_NAME);
        final int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
        final int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
        final int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
        final int durationOfCall = managedCursor
                .getColumnIndex(CallLog.Calls.DURATION);

        final JSONObject allDetailsJsonObject = new JSONObject();
        final JSONArray array = new JSONArray();

        if (managedCursor != null && managedCursor.getCount() > 0) {
            while (managedCursor.moveToNext()) {
                String contactName = managedCursor.getString(name);
                final String phoneNumber = managedCursor.getString(number);
                final String callTypeIndex = managedCursor.getString(type);
                final String callDate = managedCursor.getString(date);
                final String callDurationSeconds = managedCursor
                        .getString(durationOfCall);

                final int totalTime = Integer.parseInt(callDurationSeconds);
                int day = (int) TimeUnit.SECONDS.toDays(totalTime);
                long hours = TimeUnit.SECONDS.toHours(totalTime) - (day * 24);
                long minute = TimeUnit.SECONDS.toMinutes(totalTime)
                        - (TimeUnit.SECONDS.toHours(totalTime) * 60);
                long second = TimeUnit.SECONDS.toSeconds(totalTime)
                        - (TimeUnit.SECONDS.toMinutes(totalTime) * 60);

                String callDurationFormatted = "";
                if (hours < 10) {
                    callDurationFormatted += "0" + hours + "h ";
                } else {
                    callDurationFormatted += hours + "h ";
                }

                if (minute < 10) {
                    callDurationFormatted += "0" + minute + "m ";
                } else {
                    callDurationFormatted += minute + "m ";
                }

                if (second < 10) {
                    callDurationFormatted += "0" + second + "s";
                } else {
                    callDurationFormatted += second + "s";
                }

                String callType = null;
                final int dircode = Integer.parseInt(callTypeIndex);
                switch (dircode) {
                case CallLog.Calls.OUTGOING_TYPE:
                    callType = CallAnalyticsConstant.OUTGOING;
                    break;

                case CallLog.Calls.INCOMING_TYPE:
                    callType = CallAnalyticsConstant.INCOMING;
                    break;

                case CallLog.Calls.MISSED_TYPE:
                    callType = CallAnalyticsConstant.MISSED;
                    break;
                }

                if (contactName == null || contactName.equalsIgnoreCase("")) {
                    contactName = "UNKNOWN";
                }
        }
        managedCursor.close();
    }

如果任何人有任何想法,请您帮助我获得致电咨询相关细节双卡手机。

If anyone having any idea please kindly help me to get call related details for dual sim phones.

APP这是工作的罚款,双卡双待手机,以及 - 呼叫日志监视器

APP which is working fine for dual sim phone as well - CALL LOG MONITOR

推荐答案

您可以使用sub_id恒定值,以获取有关SIM卡的信息。

You can use "sub_id" constant value to get information about sim card.

完整路径,该值CallLog.Calls.SUB_ID =sub_id,但不可用于公众,所以就很难code在21之前的API> = 21,你可以使用PHONE_ACCOUNT_COMPONENT_NAME。

Full path to this value CallLog.Calls.SUB_ID = "sub_id", but is not available for public, so just hardcode in API before 21. For >=21 you can use PHONE_ACCOUNT_COMPONENT_NAME.

     /**
     * The subscription ID used to place this call.  This is no longer used and has been
     * replaced with PHONE_ACCOUNT_COMPONENT_NAME/PHONE_ACCOUNT_ID.
     * For ContactsProvider internal use only.
     * <P>Type: INTEGER</P>
     *
     * @Deprecated
     * @hide
     */
    public static final String SUB_ID = "sub_id";

有一个有趣的:)

Have a fun :)

这篇关于呼叫日志,双卡双待的Andr​​oid设备的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆