首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取双卡通话记录?

如何获取双卡通话记录?
EN

Stack Overflow用户
提问于 2018-05-04 19:28:31
回答 2查看 1.7K关注 0票数 0

如何在android中获取双卡通话记录。我按照下面的链接获取了dual sim呼叫日志,但是这个方法总是返回-1。我尝试了其他堆栈溢出,没有太多的双卡通话日志应答,可从api 21获得。https://stackoverflow.com/a/23907166/6891712

我试过使用下面的方法,它只给出了呼叫的详细信息,但找不到该呼叫是从哪个SIM卡拨打或接收的

代码语言:javascript
运行
复制
private void getCalldetailsNow() {

         @SuppressLint("MissingPermission") Cursor managedCursor=c.getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DATE + " DESC");

        int number = 0;
        if (managedCursor != null) {
            number = managedCursor.getColumnIndex( CallLog.Calls.NUMBER );
        }
        int duration1 = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
        int type1=managedCursor.getColumnIndex(CallLog.Calls.TYPE);
        int date1=managedCursor.getColumnIndex(CallLog.Calls.DATE);
        int idSimId = getSimIdColumn(managedCursor);

        if( managedCursor.moveToFirst() == true ) {
            String phNumber = managedCursor.getString(number);
            String callDuration = managedCursor.getString(duration1);

            String type=managedCursor.getString(type1);
            String date=managedCursor.getString(date1);
            String gettSimNumber=managedCursor.getString(idSimId);

            String dir = null;
            int dircode = Integer.parseInt(type);
            switch (dircode)
            { 
            case CallLog.Calls.OUTGOING_TYPE:
                dir = "OUTGOING";
                break;
            case CallLog.Calls.INCOMING_TYPE:
                dir = "INCOMING";
                break;
            case CallLog.Calls.MISSED_TYPE:
                dir = "MISSED";
                break;
            default: 
                dir = "MISSED";
                break;
            }       
        }

        managedCursor.close();
    }


public static int getSimIdColumn(final Cursor c) {

        for (String s : new String[] { "sim_id", "simid", "sub_id" }) {
            int id = c.getColumnIndex(s);
            if (id >= 0) {

                Log.d(" Simmmm", "sim_id column found: " + s);
                return id;
            }
        }
        Log.d(" Simmmm", "no sim_id column found");
        return -1;
    }
EN

Stack Overflow用户

发布于 2018-05-07 11:02:38

也许您可以通过get "Calls.PHONE_ACCOUNT_ID“项获得subscription_id,该项称为”用于发出或接收呼叫的帐户的标识符“。

在获得匹配插槽id的subscription_id之后,例如,插槽0是subscription_id 0,插槽id 1是subscription_id 1,然后可以使用getSlotIndex使用giveb subid,然后可以使用此slotid查询从此插槽或到此插槽的呼叫。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50173859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档