Блокировка входящих вызовов в Android

Я могу блокировать входящие вызовы в android, но проблемы, которые он звонит за долю секунд до отключения времени. Как я могу напрямую отключить телефон без единого звонка?

Я добавил разрешение в файле Manifest :

 <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> <uses-feature android:name="android.hardware.telephony" /> 

Затем создайте интерфейс IDL для получения базовой услуги телефонии.

  package com.android.internal.telephony; interface ITelephony { boolean endCall(); void answerRingingCall(); void silenceRinger(); } 

Затем был сделан широковещательный приемник для входящего вызова.

 public class PhonecallReceiver extends BroadcastReceiver { Context context = null; @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "Receving call..."); TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { Class c = Class.forName(telephony.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); ITelephony telephonyService = (ITelephony) m.invoke(telephony); Bundle b = intent.getExtras(); String incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); telephonyService.endCall(); }catch (Exception e){ e.printStackTrace(); }} 

Пока что Миссия невыполнима. Просмотр причины здесь: Почему невозможно перехватить входящие звонки на Android

Но я предлагаю вам еще временное решение, которое я сам принял:

Прежде чем блокировать вызов, первое, что вам нужно сделать, это восстановить текущий режим телефонного звонка, а затем включить молчание:

 AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); int ringerMode = audiomanage.getRingerMode(); audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT); 

После блокировки вызова (или нет) вы получаете начальный режим:

 audiomanage.setRingerMode(ringerMode); 

Эти разрешения вам понадобятся:

 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS"/> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/> 

Надеюсь, я помог тебе.

Intereting Posts
Невозможно создать оповещение об андроиде Изменить значение флажка без запуска onCheckChanged Запуск ошибки диагностики GTM Концепция Android webgl? Как определить, когда пользователь включает / выключает состояние gps? Почему MapView onTouchListener запускается только один раз? Сделать определенную деятельность как корневую активность в стеке Невозможно ссылаться на рисоваемый PNG на Java? Инфраструктура расширенной реальности Публикация частного приложения Android для нескольких клиентов Антенный настраиваемый метод getView ArrayAdapter, вызываемый несколько раз – сброс динамического значения TextView Нет правила для создания целевой NDK Могу ли я использовать статический макет (собственный пользовательский интерфейс) в ответ на встроенную встроенную поддержку Android? Как получить размер дисплея в дюймах на Android? Ограничить длину текста EditText в Android