2013-02-08 4 views
6

Ich mache eine Anwendung, in der ich eine lokale HTML-Seite im Browser öffnen möchte. Ich kann google.com öffnen. Aber wenn ich lokale HTML-Datei öffne. Aber ich bekomme folgenden FehlerWie öffne ich lokale HTML-Seite im Browser

Die Anfrage-Datei wurde nicht gefunden.

Folgende ist mein Code:

try 
    { 
     Intent i = new Intent(Intent.ACTION_VIEW); 
     File f=new File("file:///android_asset/www/trialhtml.html"); 
     Uri uri = Uri.fromFile(f); 
     i.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); 
     i.setData(uri); 
     startActivity(i); 
    } 
    catch(Exception e) 
    { 
     System.out.print(e.toString()); 

    } 

Antwort

0

Sie müssen die Android Assetmanager verwenden, um eine Datei in Vermögenswerte

AssetManager am = context.getAssets(); 
InputStream is = am.open("trialhtml.html"); 
+0

Nachdem es in die Input Umwandlung dann, wie sie im Browser öffnen . Bitte erläutern. –

3

Datei zu lesen: /// android_asset/www/trialhtml. html bedeutet nichts für eine externe Anwendung wie den Web Browser. Alle Dateien in Ihren Assets sind für andere Anwendungen nicht zugänglich. Sie haben 2 Möglichkeiten.

  1. Kopieren Sie die HTML-Datei in den freigegebenen Speicher, damit der Webbrowser auf die Datei zugreifen kann.
  2. Implementieren einer WebView in einem neuen Aktivität oder das Fragment in der Anwendung dann webview.loadUrl("file:///android_asset/www/trialhtml.html");

Sie brauchen nicht den Vermögenswert zu lesen, wie andere Antworten, die Sie anweist. WebView wird dies handhabt alle hinter den Kulissen, auch andere Assets wie Bilder Laden

Als Randbemerkung, wenn der Web-Browser der Lage ist, Ihre Dateien zu lesen, Sie würde nicht wollen,

 i.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); 

Dies ist zu verwenden, weil Sie explizit nach einem bestimmten Browser fragen, der möglicherweise auf dem Gerät des Benutzers installiert ist. Ich bin mir ziemlich sicher, dass dies auf einigen modernen Android-Geräten nicht der Fall ist, auf denen nur Chrome installiert ist. Die korrekte Verwendung so etwas wie

Uri uri = Uri.parse("http://www.example.com"); 
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
startActivity(intent); 

von nicht explizit Einstellung des Klassen- und Paketnamen wäre gewährleistet, dass unabhängig davon, welche Web-Browser installiert ist, wird der Benutzer standardmäßig ausgewählt werden.

+0

Ich bin ziemlich neu in der Android-Entwicklung. Ich weiß nicht, wie ich die HTML-Datei in den gemeinsamen Speicher kopieren soll, bitte sagen Sie mir das. –

+0

Das scheint für mich nicht funktioniert, sagt www ist ein ungültiger Ressource Verzeichnisname. Ich habe auch versucht, "roh" stattdessen zu verwenden, aber sagt nur "Webseite ist nicht verfügbar". Gezwungen, bei meinen Streams zu bleiben. – h22

+0

@sahilvig http://stackoverflow.com/questions/4447477/android-how-to-copy-files-in-assets-to-sdcard hat eine gute Antwort auf diese Frage. Stellen Sie sicher, dass Sie den Stamm des Benutzers des gemeinsam genutzten Speichers nicht verschmutzen. –

1

Öffnen und Last als Ausgang Ressource und anschließend in WebView mit loadData:

InputStream page = getResources() 
    .openRawResource(R.raw.my_web_page); 
BufferedReader r = new BufferedReader(new InputStreamReader(page)); 
String s; 
while ((s = r.readLine()) != null) 
    builder.append(s); 
r.close(); 
myWebView.loadData(builder.toString(), "text/html", "UTF-8"); 

Nur Ihre eigenen Anwendung leicht Ihr Vermögen lesen kann.

Wenn Sie die Datei mit genau dem externen Browser öffnen müssen, speichern Sie die erhaltene Zeichenfolge an einem öffentlichen Speicherort, an dem der externe Browser ebenfalls darauf zugreifen kann.

+0

Gibt es keine Möglichkeit, es im Browser zu öffnen, so dass ich Javascript auf das HTML anwenden kann und es später debuggen kann. –

+0

WebView unterstützt JavaScript kein Problem. Rufen Sie einfach .getSettings() auf. SetJavaScriptEnabled (true). – h22

+0

Gibt es eine Möglichkeit, Javascript in der Webansicht zu debuggen ??? –

0

Versuchen Mit webView können Sie es öffnen. Und wenn Sie Java Script-Datei in HTML verwenden, dann müssen Sie hinzufügen

webView.getSettings(). SetJavaScriptEnabled (true);

in Ihre Aktivität und fügen Sie auch Javascript-Datei in Assest/www-Ordner.

webView = (WebView)findViewById(R.id.webView); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.setWebChromeClient(new WebChromeClient()); 
     webView.loadUrl("file:///android_asset/www/index.html"); 
0

Um den HTML-String als Datei zu speichern:

public File saveStringToHtmlFile(String htmlString) { 
     File htmlFile = null; 
     try { 
      // If the file does not exists, it is created. 
      htmlFile = new File((ContextUtils.getAppContext()).getExternalFilesDir(null), "HTML_FILE_NAME.html"); 
      if (!htmlFile.exists()) { 
       htmlFile.createNewFile(); 
      } 

      // Adds a line to the file 
      BufferedWriter writer = new BufferedWriter(new FileWriter(htmlFile, false)); 
      writer.write(htmlString); 
      writer.close(); 
     } catch (IOException e) { 
      Log.e(TAG, "Unable to write to HTML_FILE_NAME.html file."); 
     } 
     return htmlFile; 
    } 

Um die HTML-Datei mit Browser zu öffnen:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(htmlFile), "text/html"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
Verwandte Themen