2011-12-23 79 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以獲取更詳細的回調信息(如果需要的話)。