2009-07-05 16 views
67

Quiero bloquear llamadas de pocos números, para eso quiero escribir una aplicación mía. ¿Cuáles son las API que debería usar?Cómo bloquear llamadas en android

Básicamente Deseo recibir una notificación cuando llegue una llamada, quiero comparar los números si es lo que quiero bloquear, quiero cortar la llamada o silenciarla o, si es posible, silenciarla y grabarla.

+0

creo que es posible bloquear las llamadas entrantes. Prueba esto: http://stackoverflow.com/questions/7121508/android-taking-complete-control-of-phone-is-it-possible-how/7121586#7121586 –

+0

http://stackoverflow.com/a/5268927/1939564 –

+0

Desactive la respuesta incorrecta, puede ser confuso para algunos que la respuesta aceptada no sea la correcta. – ayanami

Respuesta

3

Puede redirigir números específicos en sus contactos a su correo de voz. Eso ya es compatible.

De lo contrario, supongo que la documentación de 'Contactos' sería un buen lugar para empezar a buscar.

5

Es posible y no necesita codificarlo solo.

Simplemente ajuste el volumen del timbre en cero y la vibración en ninguna si incomingNumber es igual a una cadena vacía. Eso es ...

Se acaba de hacer para usted con la aplicación Nostalk de Android Market. Solo pruébalo ...

+6

La pregunta no se trata de ninguna aplicación de este tipo, sino de cómo bloquear el número entrante programáticamente + en su solución ¿cómo sabré cuál es el número? –

+1

No es tan difícil ... si miras dentro de la referencia del SDK, verás que hay un onCallStateChangeListener() que debe registrarse en tu aplicación. Una vez hecho, le enviará el callState que podría ser IDLE, RINGING o OFF_HOOK. Además de eso, el oyente te entregará el número entrante ... Ese es el punto donde tu acción entra en acción. Desafortunadamente, el SDK en realidad no le dará la opción de cancelar una llamada, estas funciones NO son públicas, están ocultas de manera que no hay forma de acceder a ellas. –

64

OMG !!! ¡¡¡SÍ, PODEMOS HACER ESO!!! Iba a matarme después de 24 horas de investigación y descubrimiento ... ¡Pero he encontrado una solución "nueva"!

// "cheat" with Java reflection to gain access to TelephonyManager's 
// ITelephony getter 
Class c = Class.forName(tm.getClass().getName()); 
Method m = c.getDeclaredMethod("getITelephony"); 
m.setAccessible(true); 
telephonyService = (ITelephony)m.invoke(tm); 

todo todo todo de cientos de personas que quieren desarrollar su visita de control de llamada de software this start point

hay un proyecto. y hay comentarios importantes (y créditos)

brevemente: copiar AIDL archivo, agregar permisos para manifestarse, copiar y pegar fuente para la gestión de la telefonía)))

algo más de información para usted. Comandos AT que puede enviar solo si está rooteado. Entonces puedes matar el proceso del sistema y enviar comandos, pero necesitarás un reinicio para permitir que tu teléfono reciba y envíe llamadas =)))

Estoy muy contento =) ¡Ahora mi Shake2MuteCall recibirá una actualización!

+6

Incluso si eso funciona, me parece un poco arriesgado. Su aplicación podría romperse sin aviso cada vez que cambie la API interna. –

+15

2.3 Gingerbread rompe este –

+7

el enlace está roto .... –

3

En android-N, esta característica está incluida en él. Number-blocking actualización para comprobar N androide

Android N ahora es compatible con la plataforma de bloqueo de número y proporciona una API marco para que los proveedores de servicios mantienen una lista de números bloqueados. La aplicación de SMS predeterminada, la aplicación de teléfono predeterminada y las aplicaciones del proveedor pueden leer y escribir en la lista de números bloqueados. La lista no es accesible a otra aplicación.

ventaja de son:

  1. números bloqueados en llamadas también se bloquean en los textos
  2. números bloqueados pueden persistir a lo largo restablece y dispositivos a través de la de copia de seguridad & Restaurar función
  3. Múltiples aplicaciones pueden utilizar la misma lista de números bloqueados

Para más información ation, consulte android.provider.BlockedNumberContract

Actualice un proyecto existente.

para compilar su aplicación contra la plataforma Android N, es necesario utilizar el Java 8 Developer Kit (JDK 8), y con el fin de utilizar algunas herramientas con Android Studio 2.1, es necesario instalar el Java 8 Runtime Environment (JRE 8).

Abrir el archivo build.gradle para su módulo y actualizar los valores de la siguiente manera:

android { 
    compileSdkVersion 'android-N' 
    buildToolsVersion 24.0.0 rc1 
    ... 

    defaultConfig { 
    minSdkVersion 'N' 
    targetSdkVersion 'N' 
    ... 
    } 
    ... 
} 
+0

¡Los enlaces de esta publicación no son válidos! ¡Ambos obtienen 404 no encontrado! – hadilq

+2

estos son enlaces de https://developer.android.com sitio oficial –

+0

A partir de este comentario, puede ver los enlaces aquí: https://developer.android.com/about/versions/nougat/android-7.0.html# número de bloqueo https://developer.android.com/reference/android/provider/BlockedNumberContract.html También encontró que la detección de llamadas es relevante: https://developer.android.com/about/versions/nougat/android-7.0.html#call_screening – jcmcbeth

Cuestiones relacionadas