Как заблокировать исходящие вызовы и текстовые SMS

Я разрабатываю приложение, в котором мне нужно заблокировать подростка от использования мобильного телефона во время вождения, мне нужно заблокировать вызов и sms. пожалуйста помоги . любые небольшие подсказки и подсказки. пожалуйста помогите!

Этот код заблокирует ваш вызов (ВХОДЯЩИЙ И ВЫХОД)

import java.lang.reflect.Method; import android.content.Context; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import com.CallLogApp.helper.BlockNumberHelper; import com.CallLogApp.util.UDF; import com.android.internal.telephony.ITelephony; public class CustomPhoneStateListener extends PhoneStateListener { //private static final String TAG = "PhoneStateChanged"; Context context; public CustomPhoneStateListener(Context context) { super(); this.context = context; } @Override public void onCallStateChanged(int state, String outGoingNumber) { super.onCallStateChanged(state, outGoingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: endCallIfBlocked(outGoingNumber); break; case TelephonyManager.CALL_STATE_RINGING: break; default: break; } } private void endCallIfBlocked(String outGoingNumber) { try { // Java reflection to gain access to TelephonyManager's // ITelephony getter TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); Class c = Class.forName(tm.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); com.android.internal.telephony.ITelephony telephonyService = (ITelephony) m.invoke(tm); if (new BlockNumberHelper(context).isBlocked(outGoingNumber)) { telephonyService = (ITelephony) m.invoke(tm); telephonyService.silenceRinger(); telephonyService.endCall(); } } catch (Exception e) { e.printStackTrace(); } } } 

Здесь состояние CALL_STATE_OFFHOOK будет вызываться каждый раз, когда ваш звонок будет подключаться и когда вы получили входящий вызов

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

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

Чтобы добавить ответ Дхармендрой, говорящий:

Нет никакого способа узнать, является ли он входящим вызовом или исходящим вызовом

На самом деле, есть.

Чтобы отличать входящие вызовы от исходящих вызовов, вы должны также прослушать Intent.ACTION_NEW_OUTGOING_CALL . Теперь:

когда вы видите первый Intent.ACTION_NEW_OUTGOING_CALL а затем CALL_STATE_OFFHOOK , это исходящий вызов;

когда вы сначала видите CALL_STATE_RINGING а затем CALL_STATE_OFFHOOK , это входящий вызов.

Во-вторых, вы можете использовать PhoneStateListener или слушать TelephonyManager.ACTION_PHONE_STATE_CHANGED . Из того, что я мог видеть, сначала намерение получает BroadcastReceiver , а затем PhoneStateListener получает уведомление.

 final IntentFilter theFilter = new IntentFilter(); theFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); theFilter.addAction(Intent.ACTION_NEW_OUTGOING_CALL); mBroadcastReceiver = new MyBroadcastReceiver(); mService.registerReceiver(mBroadcastReceiver, theFilter); class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ... } } 

Чтобы заблокировать исходящие вызовы, вам необходимо зарегистрировать PhoneStateListener например:

 telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE); 

Затем определите свой class MyListener следующим образом:

 private class Test extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch(state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK://this case is for outgoing call break; case TelephonyManager.CALL_STATE_RINGING://this case is for incoming call break; default: break; } } } 
  • Android - связь между двумя устройствами
  • Отключить всю активность от действия пользователя
  • Как узнать, что приложение установлено из игры Google или боковой загрузки?
  • TextWatcher для нескольких EditText
  • Удалить журнал вызовов в android для определенного номера
  • Определение пользовательских атрибутов
  • Видео YouTube не воспроизводится в WebView
  • Как начать работу со службы?
  • Как изменить значки меню навигации и переполнения панели инструментов (appcompat v7)?
  • Съемка с камеры без предварительного просмотра
  • Как включить LogCat / Console в Eclipse для Android?
  • Давайте будем гением компьютера.