如何在android中获取双卡通话记录。我按照下面的链接获取了dual sim呼叫日志,但是这个方法总是返回-1。我尝试了其他堆栈溢出,没有太多的双卡通话日志应答,可从api 21获得。https://stackoverflow.com/a/23907166/6891712
我试过使用下面的方法,它只给出了呼叫的详细信息,但找不到该呼叫是从哪个SIM卡拨打或接收的
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;
}
发布于 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查询从此插槽或到此插槽的呼叫。
https://stackoverflow.com/questions/50173859
复制相似问题