我有一个简单的测试用例,用于测试是否在点击按钮时启动了拨出电话。
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开发者组的this discussion which ended without any solution
答案 0 :(得分:3)
我认为有同样的问题。后来我发现我的活动监视器没有工作,因为robotium注册了它自己的监视器,它总是命中,阻止包括我在内的任何其他监视器。
答案 1 :(得分: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);
}