Как получить недавно набранные номера

Вопрос:Я работаю над приложением, где мне нужно получить 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 {

Вопрос:

Я работаю над приложением, где мне нужно получить 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 недопустимо, оно должно быть строковым значением.

Любые предложения по замене вышеуказанного кода, чтобы получать только набранные вызовы.

Примечание. Я уже смотрел , но не предоставляет решение только для набора набранных номеров.

Лучший ответ:

Я решил проблему, поэтому я отправляю ее для будущих посетителей.

String mobileNumber=»»; int i = 1; String number = «»; TextView dialledCall; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dialledCall = (TextView)findViewById(R.id.dialledCall); // String[] strFields = { android.provider.CallLog.Calls.NUMBER, android.provider.CallLog.Calls.TYPE, android.provider.CallLog.Calls.CACHED_NAME, android.provider.CallLog.Calls.CACHED_NUMBER_TYPE, android.provider.CallLog.Calls.DURATION }; String strOrder = CallLog.Calls.DATE + » DESC»; Cursor mCallCursor = getApplicationContext().getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.TYPE + » = » + CallLog.Calls.OUTGOING_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); }

Здесь CallLog.Calls.TYPE + » = » + CallLog.Calls.OUTGOING_TYPE в запросе отделяет набранные вызовы.

Ответ №1

Вы можете использовать класс CallLog для получения этой информации (см. http://developer.android.com/reference/android/provider/CallLog.Calls.html).

Вам интересен метод getLastOutgoingCall, который возвращает последний номер телефона.

Проверьте журналы вызовов. Вы можете легко получить доступ к этому. Сделайте что-нибудь вроде

Определить,
public Cursor mCallCursor;

Затем определите поля, которые вы хотите получить из журнала вызовов,

public static final String[] STR_FIELDS = { android.provider.CallLog.Calls.NUMBER, android.provider.CallLog.Calls.TYPE, android.provider.CallLog.Calls.CACHED_NAME, android.provider.CallLog.Calls.CACHED_NUMBER_TYPE, android.provider.CallLog.Calls.DATE, android.provider.CallLog.Calls.DURATION, android.provider.CallLog.Calls.CACHED_NUMBER_LABEL,android.provider.CallLog.Calls.NUMBER };

Установите порядок,
public static final String STR_ORDER = android.provider.CallLog.Calls.DATE + “DESC”;

Вызов курсора.

mCallCursor = getContentResolver().query( android.provider.CallLog.Calls.CONTENT_URI, STR_FIELDS, null, null, STR_ORDER);

Оцените статью
Добавить комментарий