3

我知道 Android SDK 对于双 SIM 卡支持来说是一团糟,但股票拨号器会在通话记录中显示此信息,即在通话中使用了哪张 SIM 卡(1 或 2)。我猜它存储在通话记录默认数据库中,只是想知道是否可以尽可能简单地检索它。我不需要知道 SIM 卡是否是当前正在使用的 SIM 卡。顺便说一句,如果您更换 SIM 卡,通话记录可能会变得一团糟……但这是另一个主题,对我来说无关紧要(目前 ;-)

我的问题:

1-有可能得到吗?

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

有谁猜到他们是怎么做到的?

4

1 回答 1

1

我有带 2 张 SIM 卡的手机,我从通话记录中获得了所有字段和字段名称。从结果中,名为“smid”的字段显示了处理呼叫的 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();
}
于 2013-09-19T16:07:17.410 回答