Android: Receptor de llamadas entrantes sin permiso

Sé que podemos escuchar el estado del teléfono por el receptor de la difusión con el filtro

Acción android: name = "android.intent.action.PHONE_STATE"

Pero de esta manera requiere permiso

Uses-permission android: name = "android.permission.READ_PHONE_STATE"

¿Cómo determinar la llamada GSM entrante sin este permiso?

PD

Estoy seguro de que esto es posiblemente porque Whatsapp hacerlo.
Cuando estoy hablando en las llamadas de Whatsapp de audio y luego recibió la llamada entrante gsm – whatsapp comprobarlo y establecer la llamada de auto para hacer una pausa. ¿Cómo entienden que necesitan poner pausa?

Whatsapp tiene permiso READ_PHONE_STATE en el archivo de manifiesto, pero compruebo las llamadas en Android 6 y no me concedieron este permiso. Este permiso fue deshabilitado.

Cuando este permiso está deshabilitado, mi Receptor no recibe acción android.intent.action.PHONE_STATE y PhoneStateListener no está funcionando.

Encontré una solución sin este permiso.

Primero de todo (cuando nuestra llamada del sorbo comience) necesitamos el foco audio de la petición con el lisener

  mAudioManager.requestAudioFocus(afChangeListener, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN); 

El afChangeListener puede decirnos entonces someboby cambiar el foco de audio y luego podemos comprobar el canal de audio actual. Si el modo actual es AudioManager.MODE_IN_CALL o AudioManager.MODE_RINGTONE entonces sabemos que la llamada al gsm se inició.

 AudioManager.OnAudioFocusChangeListener afChangeListener = new AudioManager.OnAudioFocusChangeListener() { public void onAudioFocusChange(int focusChange) { if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { // Permanent loss of audio focus // Pause playback immediately } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) { ScheduledExecutorService scheduler = App.getInstance().obtainScheduler(); scheduler.schedule(() -> { Logging.i(TAG, "onAudioFocusChange defer mode = " + mAudioManager.getMode()); switch (mAudioManager.getMode()) { case AudioManager.MODE_RINGTONE: case AudioManager.MODE_IN_CALL: //**there we can start standby mode** break; } }, 100, TimeUnit.MILLISECONDS); } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) { Logging.i(TAG, "onAudioFocusChange AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"); // Lower the volume, keep playing } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { // Your app has been granted audio focus again //**there we can stop standby mode** } } }; 

En primer lugar whatsapp uso de permiso que se requiere para obtener el estado del teléfono

 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

Aquí está el vínculo del archivo menifest de WhatsApp.

Usted puede ver su ellos han agregado su y usado dentro de él.

Android sí proporcionar la mejor solución para manejarlo utilizando receptor de radiodifusión. Debe utilizar estos de lo contrario su sistema sería hacky.

Siga estos enlaces para trabajar con el receptor de difusión para detectar llamadas telefónicas.

Espero que esto le ayude.

Cuando el dispositivo Android recibe una llamada telefónica onPause of Activity que se estaba mostrando antes de que la llamada telefónica se llama automáticamente y puede pausar la llamada allí.

Puede obtener esto con onReceive método con número de teléfono y todos los detalles con la llamada entrante.

  • ¿Qué información puedo obtener durante una llamada telefónica utilizando la API de Android?
  • ¿Cómo puedo grabar voz y grabar llamadas en Android?
  • Cómo obtener el número de teléfono mediante el registro de llamadas de android?
  • Android: Hacer una llamada telefónica desde el servicio
  • Android cheque tiene llamada telefónica activa
  • Identificar el evento de conexión de llamada saliente
  • Cómo saber a callee se contesta la llamada (¿Cuál es el estado del teléfono cuando levanta la llamada)
  • ¿Cómo realizar una llamada telefónica con intención en Android?
  • Cómo contestar una llamada mediante programación
  • ¿Cómo hacer una llamada telefónica mediante programación?
  • ¿Es posible reproducir música durante las llamadas para que el interlocutor pueda escucharla? Androide
  • Interesting Posts
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.