最近ダイヤルした5つの番号を取得する必要があるアプリケーションに取り組んでいます。最近ダイヤルした番号が最初になるように、番号を降順に並べ替えることができます。次のコードを使用して最近の数値を取得しています。
dialledCall = (TextView)findViewById(R.id.dialledCall);
String strOrder = CallLog.Calls.DATE + " DESC";
Cursor mCallCursor = getApplicationContext().getContentResolver().query(CallLog.Calls.CONTENT_URI,
null,
CallLog.Calls.TYPE
,null,
strOrder);
mCallCursor.moveToFirst();
do {
if( i >5 )
break;
mobileNumber = mCallCursor.getString(mCallCursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
number += mobileNumber + "\n";
i++;
}
while (mCallCursor.moveToNext());
dialledCall.setText(number);
これにより、最近の順序で数字を並べ替えることができ、最後の 5 つの数字を取得しました。しかし、クエリはすべての番号を返します。つまり、Dialed、Missed、Received も同様です。しかし、ここではダイヤル番号だけが必要です。
CallLog.Calls.TYPE
上記のクエリに関係があることはわかっています。
null 値を渡そうとしましたが、すべての数値が返されます。
私もCallLog.Calls.OUTGOING_TYPE
代わりに試してみましたが、int 値が許可されていないというエラーが発生します。文字列値である必要があります。
ダイヤルされた通話のみを取得するために、上記のコードを置き換える方法に関する提案。
注 -私はすでにhttps://stackoverflow.com/a/10480569/1626878を見てきましたが、ダイヤルされた番号のみを取得するソリューションは提供していません。