2012-05-28 17 views
5

Tengo un caso de prueba simple para probar si una llamada saliente se inicia al hacer clic en un botón o no.Instrumentation.ActivityMonitor not monitoring Intent.ACTION_CALL

public void testCalling(){ 
    IntentFilter callFilter = new IntentFilter(); 
    callFilter.addAction(Intent.ACTION_CALL); 
    callFilter.addCategory(Intent.CATEGORY_DEFAULT); 
    callFilter.addDataScheme("tel:"); 
    ActivityMonitor mMonitor = new ActivityMonitor(callFilter, null, false); 
    getInstrumentation().addMonitor(mMonitor); 

    mSolo.clickOnText("CALL"); 

    assertTrue(0 < mMonitor.getHits()); 
    sendKeys(KeyEvent.KEYCODE_ENDCALL); 
} 

Aunque la intención es llamada (se hace la llamada saliente), mi ActivityMonitor falla para registrarlo. el seguimiento de pila es

05-28 17:11:09.183: I/ActivityManager(71): Starting activity: Intent { act=android.intent.action.CALL dat=tel:+xxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } 

Por favor, ayudar a

El único otro recurso que pudiera encontrar era this discussion which ended without any solution en los desarrolladores android grupo

Respuesta

1

Después de tener el mismo problema y jugando un poco, lo tengo trabajar.

Quite el colón de "tel". Entonces deberías tener un golpe en tu monitor.

public void testMakeCall(){ 
     IntentFilter filter = new IntentFilter(Intent.ACTION_CALL); 
     filter.addCategory(Intent.CATEGORY_DEFAULT); 
     filter.addDataScheme("tel"); 

     ActivityMonitor activityMonitor = getInstrumentation().addMonitor(filter, null, false); 

     makeCall(); 

     assertTrue(activityMonitor.getHits() == 1); 
    } 
+2

no, todavía no funciona para mí. – vKashyap

3

Pensé que tenía el mismo problema. Más tarde descubrí que mi monitor de actividad no funcionaba porque el robotium registra su propio monitor que siempre golpea, bloqueando cualquier otro monitor, incluido el mío.