Завантаження веб-перегляду html з каталогу активів


142

Я намагаюся завантажити сторінку HTML із каталогу активів. Я спробував це, але це не вдається.

public class ViewWeb extends Activity {  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        WebView wv;  
        wv = (WebView) findViewById(R.id.webView1);  
        wv.loadUrl("file:///android_asset/aboutcertified.html");   // fails here
        setContentView(R.layout.webview);  
    }  
}

Я дійсно не отримую жодних помилок у повідомленні в LogCat ...


Дивіться іншу мою відповідь: stackoverflow.com/a/8694428/341091
Мартін

Відповіді:


296

Ви отримуєте WebView перед тим, як встановити перегляд "Вміст", таким чином, wv, ймовірно, є нульовим.

public class ViewWeb extends Activity {  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);  
            WebView wv;  
            wv = (WebView) findViewById(R.id.webView1);  
            wv.loadUrl("file:///android_asset/aboutcertified.html");   // now it will not fail here
        }  
    }

Це було все. У мене було так із початку, спробував поміняти його, але зараз це працює ... Класно.
AndyD273

Зі сторони, чи білий на чорному стандартний вигляд в Android? Усі мої перегляди таблиці за замовчуванням є білими на чорному, але мій html встановлений на чорний на білому ... Я можу їх змінити, але не впевнений, який з них змінити.
AndyD273

на моєму веб-сайті мобільний contactus page.html є одна адреса електронної пошти є, я використовую веб-перегляд в додатку для android і seturl, щоб відкрити сторінку weburl contactus .html у цього користувача, натисніть на електронну пошту невідома помилка схеми URL
Харша

Як запустити HTML-файл з використанням сервера в додатку Android?

16

Щоразу, коли ви створюєте діяльність, ви повинні додати setcontentview(свій макет) після супердзвінка. Тому що setcontentviewпов'язуйте xml у своїй діяльності, тому це є причиною, яку ви отримуєте nullpointerexception.

 setContentView(R.layout.webview);  
 webView = (WebView) findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/xyz.html");

6
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView wb = new WebView(this);
        wb.loadUrl("file:///android_asset/index.html");
        setContentView(wb);
    }


keep your .html in `asset` folder

2
Andoid doc посилається на assets developer.android.com/tools/projects/index.html в будь-якому випадку не працює, якщо папка моїх активів не в тій папці, на якій зараз перебуваєmain
Pawel Cioch

Мій поганий, я мав копію того самого проекту в іншому місці, і додав неправильну копію, але ця відповідь із зображенням є найкращим stackoverflow.com/questions/18302603/…
Pawel Cioch

0

Завантажте вихідний код звідси ( Відкрити файл html з активів Android )

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:background="#FFFFFF"
 android:layout_height="match_parent">

<WebView
 android:layout_width="match_parent"
 android:id="@+id/webview"
 android:layout_height="match_parent"
 android:layout_margin="10dp"></WebView>
</RelativeLayout>

MainActivity.java

package com.deepshikha.htmlfromassets;
 import android.app.ProgressDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

WebView webview;
 ProgressDialog progressDialog;

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 init();
 }

private void init(){
 webview = (WebView)findViewById(R.id.webview);
 webview.loadUrl("file:///android_asset/download.html");
 webview.requestFocus();

progressDialog = new ProgressDialog(MainActivity.this);
 progressDialog.setMessage("Loading");
 progressDialog.setCancelable(false);
 progressDialog.show();

webview.setWebViewClient(new WebViewClient() {

public void onPageFinished(WebView view, String url) {
 try {
 progressDialog.dismiss();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 });
 }
 }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.