Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android WebView显示纯文本_Android_Html_Webview - Fatal编程技术网

Android WebView显示纯文本

Android WebView显示纯文本,android,html,webview,Android,Html,Webview,我有一个WebView,我使用WebView.loadUrl(“http://myurl.com“,页面在android上显示正确4.X,但在尝试2.X时,更具体地说,2.3.5会显示与此类似的纯文本 可能有什么问题,我该如何解决?谢谢 我的完整代码: public class FragmentPolicy extends SherlockFragment implements Refreshable { private WebView webView; private Bundle webVi

我有一个WebView,我使用
WebView.loadUrl(“http://myurl.com“
,页面在android上显示正确4.X,但在尝试2.X时,更具体地说,2.3.5会显示与此类似的纯文本

可能有什么问题,我该如何解决?谢谢

我的完整代码:

public class FragmentPolicy extends SherlockFragment implements Refreshable {
private WebView webView;
private Bundle webViewBundle;
private UpdateReceiver updateReceiver;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    updateReceiver = new UpdateReceiver();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.fragment_policy, container, false);

    webView = (WebView) ll.findViewById(R.id.webView);

    webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if(url.startsWith("mailto:")){
                MailTo mt = MailTo.parse(url);
                Intent i = newEmailIntent(getSherlockActivity(), mt.getTo(), mt.getSubject(), mt.getBody(), mt.getCc());
                startActivity(i);
                view.reload();
                return true;
            } else {
                view.loadUrl(url);
            }
            return true;
        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            webView.stopLoading();
            webView.clearView();
            Log.w("test", "Could not get policy: " + description + " Errror code: " + errorCode + ". Url: " + failingUrl);
        }
    });

    loadPolicy();

    return ll;
}

private void loadPolicy(){
    if (webViewBundle == null) {

        Map<String, String> headers = new HashMap<String, String>();
        //does not work with webview
        headers.put("Content-Type", "text/html; charset=utf-8");
        headers.put("Accept", "text/html");


        webView.loadUrl(Utils.getBaseAPIAddr()+"getpolicyhtml", headers);

        //webView.loadData(URLEncoder.encode(result).replaceAll("\\+", " "), "text/html", Encoding.UTF_8.toString());

    } else {
        webView.restoreState(webViewBundle);
    }
}



private Intent newEmailIntent(Context context, String address, String subject, String body, String cc) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] {address});
    intent.putExtra(Intent.EXTRA_TEXT, body);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    intent.putExtra(Intent.EXTRA_CC, cc);
    intent.setType("message/rfc822");
    return intent;
}

@Override
public void onPause() {
    super.onPause();
    webViewBundle = new Bundle();
    webView.saveState(webViewBundle);
}

@Override
public void onResume(){
    super.onResume();
    LocalBroadcastManager.getInstance(getSherlockActivity()).registerReceiver(updateReceiver, new IntentFilter("update"));
}

@Override
public void onStop(){
    super.onStop();
    if(updateReceiver != null){
        LocalBroadcastManager.getInstance(getSherlockActivity()).unregisterReceiver(updateReceiver);
    }
}

@Override
public void refresh(){
    loadPolicy();
}

public class UpdateReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        loadPolicy();
    }
}
}
公共类碎片策略扩展SherlockFragment实现可刷新{
私有网络视图;
私有包webViewBundle;
私有更新接收者更新接收者;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
updateReceiver=新的updateReceiver();
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
LinearLayout ll=(LinearLayout)充气器。充气(R.layout.fragment_策略,容器,false);
webView=(webView)ll.findviewbyd(R.id.webView);
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
if(url.startsWith(“mailto:”){
MailTo mt=MailTo.parse(url);
Intent i=newEmailIntent(getSherlockActivity()、mt.getTo()、mt.getSubject()、mt.getBody()、mt.getCc());
星触觉(i);
view.reload();
返回true;
}否则{
view.loadUrl(url);
}
返回true;
}
@凌驾
public void onReceivedError(WebView视图、int错误代码、字符串描述、字符串失败URL){
webView.stopLoading();
webView.clearView();
Log.w(“测试”,“无法获取策略:+description+”错误代码:+errorCode+”。Url:+failingUrl);
}
});
loadPolicy();
返回ll;
}
私有void loadPolicy(){
如果(webViewBundle==null){
Map headers=newhashmap();
//不适用于webview
headers.put(“内容类型”,“text/html;charset=utf-8”);
headers.put(“接受”、“文本/html”);
loadUrl(Utils.getBaseAPIAddr()+“getpolicyhtml”,标题);
//loadData(URLEncoder.encode(result).replaceAll(“\\+”,”),“text/html”,Encoding.UTF_8.toString());
}否则{
webView.restoreState(webViewBundle);
}
}
私有意图newEmailIntent(上下文上下文、字符串地址、字符串主题、字符串正文、字符串抄送){
意向意向=新意向(意向.行动\发送);
intent.putExtra(intent.EXTRA_EMAIL,新字符串[]{address});
intent.putExtra(intent.EXTRA_文本,正文);
intent.putExtra(intent.EXTRA_SUBJECT,SUBJECT);
intent.putExtra(intent.EXTRA_CC,CC);
intent.setType(“message/rfc822”);
返回意图;
}
@凌驾
公共无效暂停(){
super.onPause();
webViewBundle=新Bundle();
保存状态(webViewBundle);
}
@凌驾
恢复时公开作废(){
super.onResume();
LocalBroadcastManager.getInstance(getSherlockActivity()).registerReceiver(updateReceiver,new IntentFilter(“更新”);
}
@凌驾
公共void onStop(){
super.onStop();
if(updateReceiver!=null){
LocalBroadcastManager.getInstance(getSherlockActivity()).unregisterReceiver(updateReceiver);
}
}
@凌驾
公共无效刷新(){
loadPolicy();
}
公共类UpdateReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
loadPolicy();
}
}
}
我尝试过的事情
*手动复制并粘贴HTML到assets文件夹中,然后加载保存的HTML,将其保存到assets文件夹中效果良好。但是为什么我不能从网上下载呢?

这样做吗

private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
 web.setWebViewClient(new HelloWebViewClient());
然后用web视图设置webview客户端,如下所示

private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
 web.setWebViewClient(new HelloWebViewClient());

你也可以上传代码吗?添加了代码和我尝试过的东西。这只是两行代码,我指的是完整的文件或更多的代码,我们不能通过看到上面两行来假设你的代码的其他行。添加。添加的代码在Android 4.X上运行良好,但在Android 2.3.5等旧设备上,页面显示为纯文本,显示所有HTML标记等,与主要问题中的图像类似。可能情况类似: