【问题标题】:WebView Error In Android Deployed DeviceAndroid 部署设备中的 WebView 错误
【发布时间】:2013-01-06 17:14:45
【问题描述】:

我有一个 html 文件可以在模拟器中完美运行,但在已部署的 Android 设备中无法运行。

这是我的具有 WebView 的布局的 XML 代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" android:background="@drawable/white_paper_complete">

<WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/wv_basicinfo" android:layout_gravity="left|center_vertical"/>
<TextView
        android:layout_width="209dp"
        android:layout_height="86dp"
        android:text="       BASIC INFORMATION"
        android:id="@+id/textView" android:textColor="@android:color/black" android:textSize="30dp"
        android:layout_gravity="center"/>
<ImageView
        android:layout_width="42dp"
        android:layout_height="45dp"
        android:id="@+id/imageView" android:layout_gravity="center" android:background="@drawable/loader"/>
</LinearLayout>

这是我在同类中的代码:

package com.example.ITax;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;


public class OpenBasicInfo extends MyActivity
{
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.basic_info);

    WebView wv_basic_info = (WebView) findViewById(R.id.wv_basicinfo);
    wv_basic_info.loadData(readTextFromResource(R.raw.basicinfo), "html", "utf-8");
}

private String readTextFromResource(int resourceID)
{
    InputStream raw = getResources().openRawResource(resourceID);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    int i;

    try
    {
         i = raw.read();
        while(i != -1)
        {
            stream.write(i);
            i = raw.read() ;
        }
    }

    catch (IOException e)
    {
        e.printStackTrace();
    }

    return stream.toString();
}
}

我的 html 文件位于 res > raw > basicinfo.html

【问题讨论】:

    标签: java android html webview intellij-idea


    【解决方案1】:
    wv_basic_info.loadData(readTextFromResource(R.raw.basicinfo), "text/html; charset=UTF-8", null);
    

    这可以完美运行,尤其是在 Android 4.0 上,它显然忽略了 HTML 中的字符编码。

    在 2.3 和 4.0.3 上测试。

    【讨论】:

    • 我已经尝试过了,但仍然无法在设备上运行 :(
    【解决方案2】:

    是否启用了 GPU 渲染?启用 GPU 渲染时不支持 WebView(这可能仅适用于模拟器) http://developer.android.com/tools/devices/emulator.html#acceleration

    注意:并非所有应用程序都与图形硬件加速兼容。特别是浏览器应用和使用WebView组件的应用不兼容图形加速。

    【讨论】:

    • 嗯,该应用程序在模拟器中运行良好,但在设备上却没有......
    猜你喜欢
    • 2017-11-13
    • 2015-09-04
    • 2021-06-02
    • 2016-04-26
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2018-04-12
    相关资源
    最近更新 更多