2017-01-12 4 views
3

SIMのスロット番号で通話履歴を取得したいと思います。この画像のように:私が得たまでそのためにマシュマロのSIMスロットでアンドロイドの通話ログを取得

Call Details want to fetch

私は、多くのサイトを検索:

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); 

} 

は現在、アンドロイドドキュメントごとにPHONE_ACCOUNT_COMPONENT_NAMEとPHONE_ACCOUNT_IDを取得しますが、SIMスロットを得るためにそれを使用する方法

このリンクに続く:

Samsung android 6.0 how to get dual sim call logs with sim slot id?

Get calls from log by specific SIM

How to get carrier name from dual sim phone Android?

Programmatically retrieve IMEI number for dual SIM in android

が、それらのどれも私のために働きました。

SubscriptionManagerクラスを使用してapi> 21でデュアルシムの両方の現在のシムの名前を取得しましたが、コールログでチェックできません。

これを行うには良い方法をお勧めします。

+0

解決策をお探しですか? –

答えて

0

あなたはCallLogで次の列照会できます

<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)); 
https://developer.android.com/reference/android/provider/CallLog.Calls.html#PHONE_ACCOUNT_ID

を使用すると、以下の権限セットを持っていることを確認

+0

ありがとう、私はそれを発見したが、いくつかのコードや小さな例を投稿してください。 –

+0

@VishalDalve編集したコードを見てください - 私は例を追加しました。あなたが役に立ったと思ったら私の答えをupvoteしてください、それは多くを意味するでしょう。ありがとうございました! – Faraz

+0

あなたが私の質問を正しく見たなら、あなたが与えた答えはすでに自分で行われています。私は私の質問の次の部分をしたい。そして私はあなたの答えをすでに受け入れました。ありがとうございました。 –

関連する問題