5

我有一个简单的测试用例,用于测试是否在单击按钮时发起了拨出呼叫。

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); 
}

虽然 Intent 被调用(拨出电话),但我的 ActivityMonitor 无法注册它。堆栈跟踪是

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 }

请帮忙

我能找到的唯一其他资源是这个讨论,它在没有任何解决方案的情况下结束了 android 开发者组

4

2 回答 2

3

我以为有同样的问题。后来我发现我的活动监视器不起作用,因为robotium注册了它自己的监视器,它总是命中,阻止了包括我在内的任何其他监视器。

于 2013-07-25T11:57:52.983 回答
1

在遇到同样的问题并玩了一会儿之后,我开始工作了。

去掉“tel”的冒号。然后你应该在你的显示器上点击一下。

    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);
    }
于 2012-08-22T23:17:09.643 回答