2011-08-25 80 views
8

我想打開我的服務與瀏覽器的當前選項卡中打開的鏈接的瀏覽器窗口。當我使用安卓開放瀏覽器從服務避免多個標籤

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com")); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
context.startActivity(intent); 

如果瀏覽器被打開,並在前臺我的服務之前啓動的意圖並且打開瀏覽器在同一窗口/選項卡中的鏈接。如果瀏覽器被最小化並且服務啓動了該意圖,則瀏覽器在新窗口/選項卡中打開該網頁。

我不能使用網絡視圖,因爲它需要在網絡瀏覽器中,它只會處理默認瀏覽器。我已經檢查了Open an url in android browser, avoid multiple tabs的線程,但沒有答案。我也嘗試過關閉瀏覽器,但這也行不通。

謝謝你的幫助!

回答

1

如果你想使用你的應用程序的大火,意圖..所以直接通過包名打電話給你的應用程序 檢查下面的代碼:

Intent in = getPackageManager().getLaunchIntentForPackage("com.package.myappweb"); 
in.putExtra("myURL","http://www.google.com"); 
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(in); 

您可以通過意向的URL,並把它在你的應用方式:

String url=getIntent().getStringExtra("myURL"); 
if(url!=null){ 
/// launch app and use one tab for showing the webpage 
}else{ 
//launch app normally. 
} 

你提到的用於使用應用程序作爲Web的應用程序..that會顯示彈出窗口使用拿起任何瀏覽器來處理鏈接的代碼..沒有這將是任何應用程序想打開鏈接

好運,

1

避免多個標籤的方法如下:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(uri); 
intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName()); 
startActivity(intent); 

的EXTRA_APPLICATION_ID將包含您的應用程序的ID,瀏覽器會回收,是由你的應用程序中打開一個標籤而不是打開一個新標籤。這樣,您的應用程序打開的所有頁面將共享相同的選項卡,並且在瀏覽器中不會出現「選項卡膨脹」。