2011-12-23 55 views
6

我有一个应用程序,它由下一个方法是启动浏览器:如何捕捉浏览器活动?

Uri uri = Uri.parse(getURL()); 
    Context context = widget.getContext(); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
    intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); 
    context.startActivity(intent); 

我有,我想赶上那活性的另一种AndroidJUnit项目。

通过接下来的步骤,我可以捕获运行浏览器的MYProjectActivity,但我无法捕获浏览器。

Instrumentation instrumentation = getInstrumentation(); 

    // Register we are interested in the authentication activiry... 
    Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(MYProjectActivity.class.getName(), null, false); 

    // Start the authentication activity as the first activity... 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.setClassName(instrumentation.getTargetContext(), MYProjectActivity.class.getName()); 
    instrumentation.startActivitySync(intent); 

    // Wait for it to start... 
    Activity currentActivity = getInstrumentation().waitForMonitorWithTimeout(monitor, 5); 

有没有人知道如何做到这一点?

+0

我尝试通过将IntentFilter而不是类传递给addMonitor()方法,并在IntentFilter中使用Intent.ACTION_VIEW来尝试捕获浏览器的ActivityMonitor。它在我的代码中没有工作,但我认为这是由其他问题引起的,所以它可能适用于您。 – 2012-02-03 13:28:07

+0

Jan,感谢您的回答<但我应该补充说明,此活动监视器仅适用于startActivitySync方法。在我的应用程序中使用startActivity - 对于这种方法它不起作用。 – 2012-02-07 16:57:21

回答

0

我不知道如何来监控你的要求,但提供了一个替代的想法浏览器:

你需要掂量出你的理由是什么,使用的浏览器,但你有没有考虑使用WebView代替?它允许您进行更多的控制,因为您可以将其放置到活动中,并观察意图流量以及子类WebView以获取更详细的回调信息(如果需要的话)。