2010-07-25 12 views
9
kann nicht gefunden werden

Ich möchte den standardmäßigen Android-Browser für eine bestimmte URL ausführen. Ich verwende diesen Code:Starten der Browserabsicht mit benutzerdefinierter Klasse - Aktivität

Intent i = new Intent(); 
i.setAction("android.intent.action.VIEW"); 
i.addCategory("android.intent.category.BROWSABLE"); 
i.setClassName("com.google.android.browser", "com.android.browser.BrowserActivity"); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setData(Uri.parse(url)); 
startActivity(i); 

Der Fehler, den ich erhalten ist:

Unable to find explicit activity class { 
com.google.android.browser/com.android.browser.BrowserActivity}; 
have you declared this activity in your AndroidManifest.xml? 

Ich habe auch versucht, die Absichten Filterung durch das Paket:

i.setPackage("com.google.android.browser"); 

statt setClassName, sondern zu Nr.

No Activity found to handle Intent { act=android.intent.action.VIEW 
cat=[android.intent.category.BROWSABLE] 
dat=http://www.google.com/ flg=0x10000000 pkg=android } 

Ich habe auch versucht, <uses-library android:name="com.google.android.browser" /> dem Manifest hinzuzufügen.

Fehle ich hier etwas?

PS: Ich bin nicht daran interessiert, startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))) zu verwenden, da es alle Wahlen für das Surfen Intent auflisten wird.

Antwort

6

ich dies verwenden, es ist ok.

intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity")); 

ich denke, Sie wissen was falsch. :)

6

Bitte beachten Sie die Standard-Browser kann überschrieben werden und es ist nicht immer die eingebaute Browser-App, es kann zum Beispiel Opera Mini sein.

Sie benötigen diese Art und Weise zu tun:

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri data = Uri.parse("http://www.google.com"); 
intent.setData(data); 
startActivity(intent); 
+4

Wie ich in meiner Frage angegeben habe, möchte ich in der Lage sein, den * Standard-Android-Browser *, nicht den * standardmäßig ausgewählten * Browser auszuführen. Als Seitenknoten habe ich zuerst mit der von Ihnen erwähnten Lösung versucht, aber ohne Erfolg, da sie offensichtlich den standardmäßig eingestellten Browser startet (oder den Anwendungswähler startet). –

+0

Wie verwendet man diese Absicht in einer Nicht-Aktivitätsklasse? – Maxwell

+0

Der Nachteil dafür - für lokale HTML-Dateien startet es HTMLViewer App statt Browser. – JustAMartin

1

Eine Möglichkeit, eine URL in einem Browser von Code zu öffnen, ist ein Webview zu verwenden.

eine WebViewClientClass erstellen, die die WebViewClient wie erstreckt:

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    return true; 
} 

Dann eine Webansicht erstellen. Set webview.setWebViewClient(new WebViewClientClass()); --- Dies ist eine kleine Problemumgehung, so dass der Standardwebbrowser nicht übernimmt.

Dann nehmen Sie die URL in einem EditText und setzen es um den Browser zu laden, wie:

webview.loadurl(urlfield.getText().toString()); 
webview.requestFocus(); 

Dies sollte den Web-Browser mit der URL laden, die Sie angefordert haben.

this helps ... :)

+0

setze den webview.setWebViewClient nicht, wenn dein Standard-Webbrowser deine Anfrage übernehmen soll ... – Flash

+1

Ich möchte kein Browserfenster starten (oder verwende * meinen eigenen * Browser). Ich möchte den Standardbrowser von Android * starten.Außerdem würde das Starten eines Browser-Fensters zusätzliche Komplexität mit sich bringen, wie die Verwaltung des Caches, Lesezeichen, Zurück-Taste usw. usw. Übrigens formatieren Sie bitte Ihren Code;) –

Verwandte Themen