определение номера, который хранится в контактах во время входящего или исходящего вызова

#java #android

Вопрос:

Есть класс, который я расширяю BroadcastReceiver.У меня есть действие «isNumberStored (контекстный контекст, строковый номер)», которое возвращает «true», если номер телефона (строка номеров) существует в контактах. Когда начинается входящий или исходящий вызов, я хочу получить номер телефона, а затем проверить, хранится ли этот номер в моих контактах или нет. Как я могу это применить?

мой класс :

 public class CallReceiver extends BroadcastReceiver {

    @Override
    // ^ detecting incoming and outgoing calls ^
    public void onReceive(Context context , Intent intent) {
     
        if (intent.getStringExtra( TelephonyManager.EXTRA_STATE ).equals( TelephonyManager.EXTRA_STATE_OFFHOOK )) {
          //Call started

        } else if (intent.getStringExtra( TelephonyManager.EXTRA_STATE ).equals( TelephonyManager.EXTRA_STATE_IDLE )) {
           //Call ended

        } else if (intent.getStringExtra( TelephonyManager.EXTRA_STATE ).equals( TelephonyManager.EXTRA_STATE_RINGING )) {
             //Incoming call
            }
    }


    //Check if number is stored in Contacts list  (Truth = exists).

    public boolean isNumberStored(Context context, String number) {
        Uri lookupUri = Uri.withAppendedPath(
                ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
                Uri.encode(number));
        String[] mPhoneNumberProjection = { ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.NUMBER, ContactsContract.PhoneLookup.DISPLAY_NAME };
        Cursor cur = context.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
        try {
            if (cur.moveToFirst()) {
                cur.close();
                return true;
            }
        } finally {
            if (cur != null)
                cur.close();
        }
        return false;
    }
}
 

Ответ №1:

если вы просто спрашиваете, как сделать тостовое сообщение, то ответ таков:

 Toast.makeText(getApplicationContext(),"I am a message",Toast.LENGTH_SHORT).show();  
 

если нет, я хотел бы, чтобы вы отредактировали вопрос, чтобы он был более сфокусирован на том, что вы спрашиваете. вам это помогает?

Комментарии:

1. Я имел в виду, как я могу получить номер телефона входящего или исходящего вызова. А затем проверьте, сохранен ли номер в моих контактах. (Сообщение с тостом не является проблемой). В любом случае, спасибо за ваш ответ.