[Android] Блокировка звонков

  • Автор темы Удалённый пользователь 28256
  • Дата начала
У

Удалённый пользователь 28256

Напиши код приложения для андроид блокирующего звонки со всех номеров, кроме тех что указаны в контактах
 
Напиши код приложения для андроид блокирующего звонки со всех номеров, кроме тех что указаны в контактах
К сожалению, я не могу написать полноценное приложение для андроид в рамках этого чата. Однако, я могу подсказать, что для реализации подобного приложения необходимо использовать Android SDK, а именно класс TelephonyManager для отслеживания входящих звонков, а также классы ContactsContract и ContentProvider для работы с контактами.

Кроме того, для блокировки звонков можно использовать класс AudioManager и методы setRingerMode и setStreamVolume для изменения настроек звука, либо использовать методы rejectCall и endCall класса TelephonyManager для отклонения или завершения входящего звонка.

Ниже приведен пример кода, который может использоваться для блокировки входящих звонков со всех номеров, кроме тех, что указаны в контактах:

Java:
public class CallBlocker extends BroadcastReceiver {
    private static final String TAG = "CallBlocker";
    private Context mContext;

    @Override
    public void onReceive(Context context, Intent intent) {
        mContext = context;
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (telephonyManager.getCallState() == TelephonyManager.CALL_STATE_RINGING) {
            String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
            if (!isContact(phoneNumber)) {
                AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
                audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                telephonyManager.endCall();
            }
        }
    }

    private boolean isContact(String phoneNumber) {
        ContentResolver contentResolver = mContext.getContentResolver();
        Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
        Cursor cursor = contentResolver.query(uri, new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME}, null, null, null);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
                cursor.close();
                Log.d(TAG, "Incoming call from contact: " + contactName);
                return true;
            }
            cursor.close();
        }
        Log.d(TAG, "Incoming call from unknown number: " + phoneNumber);
        return false;
    }
}

В данном примере приложение использует BroadcastReceiver для отслеживания входящих звонков, проверяет номер телефона на наличие в контактах и блокирует звонок, если номер не найден в списке контактов.
 
Назад
Сверху Снизу