通过Android的通话记录获取通话时使用的SIM卡号码

时间:2013-04-26 18:14:03

标签: android-contacts calllog dual-sim

我知道Android SDK对双SIM卡支持来说很麻烦,但是股票拨号器会在通话记录中显示这些信息,其中SIM卡(1或2)在通话中使用。我猜它存储在调用日志默认数据库中,只是想知道是否可以尽可能简单地检索它。我不需要知道SIM是否是当前正在使用的SIM。顺便说一句,如果你改变了西姆卡的话,通话记录可能会变得很乱......但它是另一个主题,对我来说无关紧要(此刻; - )

我的问题:

1-有可能得到它吗?

2-这是对文件/数据库的简单查询吗? 我找到了一款名为2SIMCallLogger的应用程序,可在Google Play上找到。

有人猜到他们是怎么做到的吗?

1 个答案:

答案 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();
}