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コールログを取得する方法は?

特定の SIM でログから通話を取得する

デュアル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 に答える