2012-04-11 9 views
4

mit Android 2.xi könnte die LösungÖffnungs-local-html-Datei-mit-Android-Browser in Android 3.x

browserIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity") 

in der Post aufgelöst verwenden:

opening local html file with Android Browser

aber mit android 3.2 ich habe diesen Fehler:

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

ich denke, dass die Klasse com.android.browser.BrowserActivity existiert nicht in Android 3.x

Irgendeine Lösung?

+0

Auch auf Android 4.0.4 –

+0

@NicolasRaoul gesehen, ist dieses Problem gelöst? –

Antwort

2

keine befriedigende Lösung, aber in einer Demo-Anwendung alternativ ich den folgenden Code verwendet:

String url = "content://com.android.htmlfileprovider/sdcard/mydir/myfile.html"; 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(url), "text/html"); 
startActivity(intent); 

der Regel mindestens eines der beiden Werke.

https://github.com/nicolas-raoul/OxygenGuide-Android/blob/master/src/org/github/OxygenGuide/MainActivity.java#L69

+0

In meinem Nexus 5 bringt es nur einen Dialog hervor, den ich aus einigen zufälligen (atleast zu mir) Apps wählen kann; wie Kalender, Anrufeinstellungen, Karten und sogar Waze. –

1
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity") 

öffnen, was dir das Paket "com.android.browser" hat. Das Problem mit der Verwendung ist, dass über verschiedene Versionen von Android und verschiedenen Herstellern der Standardbrowser ändert. Zum Beispiel sind Nexus-Geräte oft mit der Chrome-App vorinstalliert, die einen anderen Paketnamen hat.

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

Der Fehler, den Sie kopiert haben erklärt, dass es keine Anwendung mit dem Paketnamen browserIntent.setClassName() verwendet wird explizit eine bestimmte App zu öffnen, was bedeutet, es nicht Aktion fragen Browser bereitstellen sollten Sie mögen benutzen.

Wenn Sie dies vermeiden möchten (Popup), können Sie überprüfen, welche Browser sich auf dem Gerät befinden, und möglicherweise einen Download vorschlagen, bevor Sie klickbare Links erstellen können.

können Sie auch den Code aus dem anderen Vorschlag verwenden.

String url = "content://com.android.htmlfileprovider/sdcard/mydir/myfile.html"; 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(url), "text/html"); 
startActivity(intent); 

Dies gibt an, dass Sie eine Aktivität öffnen möchten, die die Daten vom Typ "text/html" verarbeiten kann. Indem ich es ansehe. Dies würde Ihnen eine Liste von Anwendungen (verschiedene installierte Browser) zur Auswahl bieten.

0
Uri uri = Uri.parse(url); 
Intent browserIntent = new Intent(Intent.ACTION_VIEW); 
browserIntent.setDataAndType(uri, "text/html"); 
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE); 
startActivity(browserIntent);