how open local html page in browser

前端 未结 5 1824
被撕碎了的回忆
被撕碎了的回忆 2020-12-20 20:51

I am making an application in which i want to open a local html page in the browser. I am able to open google.com. But when i\'m opening local html file. But i am getting fo

相关标签:
5条回答
  • 2020-12-20 21:25

    To save the html string as file:

     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;
        }
    

    To open the html file with browser:

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(htmlFile), "text/html");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    
    0 讨论(0)
  • 2020-12-20 21:30

    file:///android_asset/www/trialhtml.html means nothing to an external application like the Web Browser. Any files in your assets are not accessible by other applications. You have 2 options.

    1. Copy the html file to shared storage so that the the file can be accessed by the webbrowser.
    2. Implement a WebView within a new Activity or fragment in your application then webview.loadUrl("file:///android_asset/www/trialhtml.html");

    You do not need to read the asset like other answers are instructing you. WebView will handle this all behind the scenes, including loading other assets like images

    As a side note, if the web browser was able to read your files, you would not want to use

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

    This is because you are explicitly asking for a certain browser, which may or may not be installed on the user's device. I'm reasonably sure this isn't the case on some modern Android devices that come with only Chrome installed. The correct usage would be something like

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

    By not explicitly setting the class and package name, this ensures that no matter which web browser is installed, the users default will be picked.

    0 讨论(0)
  • 2020-12-20 21:33

    Open and load as raw resource and then place into WebView with 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");
    

    Only your own application can easily read your assets.

    If you need to open the file with exactly the external browser, save the obtained string to some public location where the external browser could also access it.

    0 讨论(0)
  • 2020-12-20 21:35

    You need to use the Android Assetmanager to read a file in assets

    AssetManager am = context.getAssets();
    InputStream is = am.open("trialhtml.html");
    
    0 讨论(0)
  • 2020-12-20 21:48

    Try Using webView you can open it. And if you are using java script file in html then you have to add

    webView.getSettings().setJavaScriptEnabled(true);

    into your activity and also add javascript file into assest/www folder.

    webView = (WebView)findViewById(R.id.webView);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.setWebChromeClient(new WebChromeClient());
            webView.loadUrl("file:///android_asset/www/index.html");
    
    0 讨论(0)
提交回复
热议问题