我知道Android SDK对双SIM卡支持来说很麻烦,但是股票拨号器会在通话记录中显示这些信息,其中SIM卡(1或2)在通话中使用。我猜它存储在调用日志默认数据库中,只是想知道是否可以尽可能简单地检索它。我不需要知道SIM是否是当前正在使用的SIM。顺便说一句,如果你改变了西姆卡的话,通话记录可能会变得很乱......但它是另一个主题,对我来说无关紧要(此刻; - )
我的问题:
1-有可能得到它吗?
2-这是对文件/数据库的简单查询吗? 我找到了一款名为2SIMCallLogger的应用程序,可在Google Play上找到。
有人猜到他们是怎么做到的吗?
答案 0 :(得分:1)
我有2张SIM卡的电话,我从calllog和字段名称获得了所有字段。 根据结果,名为“simid”的字段显示哪个SIM卡处理了呼叫。
public void editToFile(){
File file = new File(Environment.getExternalStorageDirectory(), "fileOut.txt");
try{
BufferedWriter writer = new BufferedWriter(new FileWriter(file,true));
writer.write(mEdit.getText().toString());
writer.newLine();
writer.flush();
writer.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
public void getCallLogs(){
final String[] projection = null;
final String selection = null;
final String[] selectionArgs = null;
final String sortOrder = "DATE DESC";
Cursor cursor = this.getContentResolver().query(Uri.parse("content://call_log/calls"),projection,selection,selectionArgs,sortOrder);
int j=0;
//mEdit is EditText
mEdit.setText("");
if (cursor != null) {
int L=cursor.getColumnCount();
for(int i=0;i<L;i++)
mEdit.append(cursor.getColumnName(i) + "\t");
mEdit.append("\n");
while (cursor.moveToNext()) {
j++;
if(j>=5)
break;
for(int i=0;i<L;i++){
String callField = cursor.getString(i);
mEdit.append(callField + "\t");
}
mEdit.append("\n");
}
}
editToFile();
}