4

我想通过 sim 插槽号获取通话记录历史记录。像这张图片:

呼叫详细信息要获取

为此,我搜索了许多网站,直到我得到:

Cursor managedCursor = getActivity().managedQuery(CallLog.Calls.CONTENT_URI, null,
            null, null, strOrder);
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 account = 0;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    account = managedCursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_COMPONENT_NAME);//for versions above lollipop
    ac_id = managedCursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_ID);

}

目前根据 android 文档获取 PHONE_ACCOUNT_COMPONENT_NAME 和 PHONE_ACCOUNT_ID 但如何使用它来获取 sim 插槽

按照这个链接:

Samsung android 6.0 如何获取带有 SIM 卡插槽 ID 的双卡通话记录?

通过特定 SIM 从日志中获取呼叫

如何从双卡手机 Android 获取运营商名称?

以编程方式检索android中双SIM卡的IMEI号码

但没有一个对我有用。

我使用 SubscriptionManager 类在 api>21 中的双 sim 卡中获得了当前 sim 卡的名称,但无法在通话记录中检查它。

请建议我更好的方法来做到这一点。

4

1 回答 1

0

您可以在CallLog中查询以下列:https ://developer.android.com/reference/android/provider/CallLog.Calls.html#PHONE_ACCOUNT_ID

确保您具有以下权限集:

<uses-permission android:name="android.permission.READ_CALL_LOG" />

然后添加以下 Java 代码以获取该列:

Uri allCalls = Uri.parse("content://call_log/calls");
Cursor c = managedQuery(allCalls, null, null, null, null);
String id = c.getString(c.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_ID));
于 2017-01-12T05:09:49.870 回答