3

Android SDK がデュアル SIM をサポートするために大混乱していることは知っていますが、ストック ダイヤラーは、通話でどの SIM カード (1 または 2) が使用されたかという情報を通話ログに表示します。通話ログのデフォルトデータベースに保存されていると思いますが、できるだけ簡単に取得できるかどうかを知りたいだけです。SIM が現在使用されているものかどうかを知る必要はありません。ちなみに、Simカードを変えたら通話履歴がめちゃくちゃになったのかもしれませんが…でもそれは別問題で、私には関係ありません(現時点では;-)

私の質問:

1- 入手可能ですか?

2- ファイル/データベースに対する単純なクエリですか? Google Play で入手できる 2SIMCallLogger というアプリを見つけました。

誰かが彼らがどのようにそれをしたかを推測しますか?

4

1 に答える 1

1

私は 2 つの SIM カードを搭載した電話を持っており、通話ログとフィールド名からすべてのフィールドを取得しました。結果から、「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();
}
于 2013-09-19T16:07:17.410 に答える