En mi aplicación, mantendré una lista de contactos.Cómo rechazar una llamada programáticamente en android
Se eliminarán todas las llamadas de los contactos en la lista. Aparecerán bajo llamadas perdidas pero el teléfono no sonará.
En mi aplicación, mantendré una lista de contactos.Cómo rechazar una llamada programáticamente en android
Se eliminarán todas las llamadas de los contactos en la lista. Aparecerán bajo llamadas perdidas pero el teléfono no sonará.
En primer lugar crear esta interfaz:
public interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
luego crear esta clase que se extiende BroadcastReceiver
public class IncomingCallReceiver extends BroadcastReceiver {
private ITelephony telephonyService;
private String blacklistednumber = "+458664455";
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService = (ITelephony) m.invoke(tm);
Bundle bundle = intent.getExtras();
String phoneNumber = bundle.getString("incoming_number");
Log.e("INCOMING", phoneNumber);
if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) {
telephonyService.silenceRinger();
telephonyService.endCall();
Log.e("HANG UP", phoneNumber);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Esto sólo bloqueará esa única del número de teléfono, pero usted consigue el punto.
En el complemento manifiesta lo siguiente:
<receiver android:name=".IncomingCallReceiver">
<intent-filter android:priority="999">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
hola lo hice. Pero nada sucedió. Cómo crear esa interfaz, me refiero a la interfaz normal o archivo de ayuda. – harish
solo crea un intercafe normal. Pero es posible que deba colocarlo en un paquete llamado: com.android.internal.telephony intente eso. –
incluso si no está funcionando, creo que tenemos que generar un archivo de ayuda. Pero no sé cómo hacer eso. – harish
Descargar la clase de ITelephony de here.
luego ponerlo en un paquete (crea un nuevo paquete) de com.android.internal.telephony.
A continuación, importe el paquete a la clase apropiada y para rechazar una llamada utilice el método endCall()
ContentObserver es la palabra en su lata mejores prácticas –
posible duplicado de [Cómo bloquear llamadas en android] (http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android) –
'MODIFY_PHONE_STATE' [el permiso es solo para aplicaciones de sistema] (http://stackoverflow.com/questions/4715250/how-to-grant-modify-phone-state-permission-for-apps-ran-on-gingerbread) (para Android 2.3 y superior). Si desea usar la aplicación solo para el teléfono al que tiene acceso, puede [hacer que su aplicación de sistema de aplicación] (http://projectmaxs.org/documentation/systemapp.html) – tchelidze