2011-06-19 17 views
7

Estoy tratando de iniciar una actividad desde un receptor de difusión que escucha la llamada saliente que es 5556. El problema es que la actividad no se inicia, pero la esfera incorpora actividad se llama, he cambiado la prioridad del intento a 100, pero fue en vano. ¿Cómo hago para que la actividad se inicie en el marcado en lugar de la actividad de llamadas incorporada? Aquí está el código:iniciando una actividad desde un receptor de difusión que escucha la llamada saliente

package com.messageHider; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class launchReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     String compare_num="5556"; 
     if(number.equals(compare_num)) 
     { 
      Intent myintent=new Intent(context,messageHider.class); 
      myintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myintent); 
      abortBroadcast(); 
     } 
    } 

} 

archivo de manifiesto:

<receiver android:name=".launchReceiver"> 
    <intent-filter android:priority="0"> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> 
    </intent-filter> 
</receiver> 
+0

¿Alguna vez has venido bien? – Zapnologica

Respuesta

3

En el manifiesto, se precisa un permiso (de acuerdo con los documentos):

Usted debe tener el permiso PROCESS_OUTGOING_CALLS a reciba esto intención.

Y eso es

"android.permission.PROCESS_OUTGOING_CALLS" 

también directamente de los documentos:

Cualquier BroadcastReceiver recibir esta intención no debe abortar la transmisión.

Y aquí está el enlace a la página donde me dieron la información:

http://developer.android.com/reference/android/content/Intent.html

+0

¿No tiene ningún código de ejemplo de la intención? – Zapnologica

+0

El intento enviado es 'android.intent.action.NEW_OUTGOING_CALL'. La intención es enviada por el sistema. Cuando lo reciba, obtendrá 'EXTRA_PHONE_NUMBER' de los datos de intención, luego deberá establecer' resultData' en nulo si desea que su aplicación maneje la llamada, o puede cambiar el número de teléfono y el sistema manejará el nuevo número. No lo he usado por un tiempo, pero eso es lo que obtengo de los documentos. ¿Eso ayuda? Si no, ¿qué código de ejemplo quieres exactamente? – Jakar

3

vez de interrumpir la emisión con abortBroadcast(); use setResultData (null) para finalizar la llamada luego de iniciar su actividad.

Cuestiones relacionadas