volumen una puedo para pantalla one llamadas llamada deja contestar con como celular boton automaticamente audifonos aplicaciones aparece alcatel android telephony telephonymanager

android - una - mi celular no me deja contestar llamadas



terminar la llamada entrante programáticamente (3)

Esta es una pregunta familiar en SO. Y lo que necesito es terminar la llamada programáticamente. He buscado mucho ...

http://androidsourcecode.blogspot.in/2010/10/blocking-incoming-call-android.html http://androiddesk.wordpress.com/2012/08/02/blocking-a-call-without-user-intervention-in-android/

Rechazar llamada entrante en android

¿Cómo responder / finalizar una llamada programáticamente en Android 4.1?

http://www.emoticode.net/android-sdk/block-incoming-and-outgoing-phone-calls-programmatically.html

Cómo bloquear llamadas en Android

¿Cómo bloquear una llamada de número móvil y la recepción de mensajes en el desarrollo de aplicaciones de Android?

y http://androidsourcecode.blogspot.in/2010/10/blocking-incoming-call-android.html

Y muchas más preguntas, respuestas y sugerencias ...

Todos están diciendo que use ITelephonyService.aidl en combinación con TelephonyManager

y la solución funciona perfectamente en muchos dispositivos, pero no funciona en Samsung S Duos . Estoy luchando más de una semana pero no conseguí una solución ... ¿hay alguna API especial con la que trabajar en este tipo de dispositivos? ¿Cómo puedo rechazar la llamada entrante? por favor, ayúdame...


En su aplicación, cree un paquete (com.android.internal.telephony) en la carpeta java. Y luego copie la interfaz ITelephone en ese paquete

Fuente de la interfaz del teléfono: http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/com/android/internal/telephony/ITelephony.java/?v=source

Código para desconexión de llamada:

Context context = getApplicationContext(); try { TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); Class<?> c = Class.forName(telephony.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); ITelephony telephonyService = (ITelephony) m.invoke(telephony); telephonyService.answerRingingCall(); } catch (Exception e) { }

También agrega permisos para usar estos métodos:

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


Intenta esto Claro que funcionará. Esta trabajando bien para mi.

Puede descargar el archivo ITelephony.java desde ITelephony.java

Después de que agregue el método para finalizar la llamada:

Función para desconectar llamada

public void disconnectCall(){ try { String serviceManagerName = "android.os.ServiceManager"; String serviceManagerNativeName = "android.os.ServiceManagerNative"; String telephonyName = "com.android.internal.telephony.ITelephony"; Class<?> telephonyClass; Class<?> telephonyStubClass; Class<?> serviceManagerClass; Class<?> serviceManagerNativeClass; Method telephonyEndCall; Object telephonyObject; Object serviceManagerObject; telephonyClass = Class.forName(telephonyName); telephonyStubClass = telephonyClass.getClasses()[0]; serviceManagerClass = Class.forName(serviceManagerName); serviceManagerNativeClass = Class.forName(serviceManagerNativeName); Method getService = // getDefaults[29]; serviceManagerClass.getMethod("getService", String.class); Method tempInterfaceMethod = serviceManagerNativeClass.getMethod("asInterface", IBinder.class); Binder tmpBinder = new Binder(); tmpBinder.attachInterface(null, "fake"); serviceManagerObject = tempInterfaceMethod.invoke(null, tmpBinder); IBinder retbinder = (IBinder) getService.invoke(serviceManagerObject, "phone"); Method serviceMethod = telephonyStubClass.getMethod("asInterface", IBinder.class); telephonyObject = serviceMethod.invoke(null, retbinder); telephonyEndCall = telephonyClass.getMethod("endCall"); telephonyEndCall.invoke(telephonyObject); } catch (Exception e) { e.printStackTrace(); Log.error(DialerActivity.this, "FATAL ERROR: could not connect to telephony subsystem"); Log.error(DialerActivity.this, "Exception object: " + e); } }


Prueba esta función:

private void endCall() { Context context = getApplicationContext(); try { TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); Class<?> c = Class.forName(telephony.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); ITelephony telephonyService = (ITelephony) m.invoke(telephony); // Funciona en 2.2 // Funciona en 2.3.3 telephonyService.endCall(); logManager.debug("ITelepony was used (endCall)"); } catch (Exception e) { logManager.error("Error ending call: " + e.getMessage()); logManager.debug("Error ending call", e); } }