2011-08-26 24 views
6

Hola, me preguntaba si hay una manera de anular la pantalla de llamadas entrantes para agregarle más funcionalidades. Si es así, ¿podría señalarme en la dirección correcta o proporcionar algún código de muestra?¿Invalidar pantalla de llamada entrante?

---------------------------------------------- ---- EDIT: --------------------------

llegué el receptor funciona bien cuando la llamada entra, pero ¿cómo Obtengo la ventana actual para anular la pantalla de llamadas? Esto es lo que obtuve hasta ahora ... pero obtengo una classCastException intentando lanzar actividad desde el contexto, no puedo pensar en otra forma de acceder a la ventana.

@Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
      String state = extras.getString(TelephonyManager.EXTRA_STATE); 
      Log.w("DEBUG", state); 
      Log.w("DEBUG", "-------------------------------------------------- Broadcast Received"); 
      if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
       String phoneNumber = extras 
         .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
       Log.w("DEBUG", phoneNumber); 
       Activity activity = (Activity)context.getApplicationContext(); 
       Window window = activity.getParent().getWindow(); 
       window.addContentView(window.findViewById(R.layout.textalertbuttonview),null); 
       Log.w("DEBUG", "------------------------Button Added"); 

      } 
     } 
     else { 
      Log.w("DEBUG", "---------------------------------------------------no Extras"); 
     } 
    } 

------------------------------------------- ------- EDIT 2: --------------------------

no parece después de algunas investigaciones que en realidad puede agregar elementos a la pantalla de la llamada entrante real. Así que tendré que hacer mi propia vista y anular la pantalla de la llamada entrante. Pero todavía estoy abierto a las ideas ... Vi la llamada entrante más, pero no puedo encontrar el código fuente para ese proyecto.

+0

Por favor, comparta si obtuvo una mejor solución. También estoy tratando de hacer lo mismo. Muchas gracias por su ayuda – png

Respuesta

2

En términos generales: Se puede establecer un BroadcastReceiver escuchar PHONE_STATE:

<receiver android:name=".CallsBroadcastReceiver" android:enabled="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 

A continuación, dentro de este receptor (después de comprobar el estado del teléfono que desea manejar (zumbido, en llamada, colgaron, etc. .) que debe obtener la ventana actual (que debe ser la pantalla de llamada) y añadir un objeto de la misma. y, por supuesto quitar la vista una vez que el estado no es el que desea manejar.

muy general, pero esa es la idea.

+0

Gracias, pero ¿cómo obtendría la ventana actual desde el método onRecieve? He publicado un código que utilicé pero obtuve una excepción de clase. – Pengume

Cuestiones relacionadas