Android Webview未知错误 [英] Android Webview Unknown Error

查看:70
本文介绍了Android Webview未知错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我制作了一个使用WebView的应用.它可以工作,但是LogCat会产生此错误:

I have made an app that uses WebView. It works, however, the LogCat produces this error:

03-27 10:36:35.830: E/eglCodecCommon(1466): **** ERROR unknown type 0x0 (glSizeof,73)

我了解0x0是未知错误类型(在Linux命令中),但是如何解决呢?
我的Java代码是:

I understand that 0x0 is an unknown error type (in Linux command), but how can I fix this?
My Java code is:

@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    private WebView edlineWebView;
    private ProgressBar progressBar1;
    private String currentUrl;
    private boolean exitConfirmation;
    private BroadcastReceiver completeReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Resources res = context.getResources();
            Toast.makeText(context, res.getString(R.string.download_complete), Toast.LENGTH_SHORT).show();
            startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));
        }
    };

    final Activity activity = this;

    @Override
    public void onBackPressed() {
        if (edlineWebView.copyBackForwardList().getCurrentIndex() > 0) {
            edlineWebView.goBack();
        }    
        else {
            if (exitConfirmation) {
                super.onBackPressed();
                return;
            }

            this.exitConfirmation = true;
            Toast.makeText(this, "Press the back key again to exit", Toast.LENGTH_SHORT).show();

            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    exitConfirmation=false;                       
                }
            }, 2000);
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.activity_main);

        edlineWebView = (WebView) findViewById(R.id.webView1); 
        progressBar1 = (ProgressBar) findViewById(R.id.progressBar1);
        String url = "http://www.edline.net/";

        edlineWebView.setWebViewClient(new WebViewClient());
        edlineWebView.getSettings().setJavaScriptEnabled(true);
        edlineWebView.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3");
        edlineWebView.loadUrl(url);
        edlineWebView.setDownloadListener(new DownloadListener() {
            @SuppressLint("DefaultLocale")
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
                MimeTypeMap mtm = MimeTypeMap.getSingleton();
                DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                Uri downloadUri = Uri.parse(url);
                String fileName = downloadUri.getLastPathSegment();
                int pos = 0;

                if ((pos = contentDisposition.toLowerCase().lastIndexOf("filename=")) >= 0) {
                    fileName = contentDisposition.substring(pos + 9);
                    pos = fileName.lastIndexOf(";");
                    if (pos > 0) {
                        fileName = fileName.substring(0, pos - 1);
                    }
                }

                String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()).toLowerCase();
                String mimeType = mtm.getMimeTypeFromExtension(fileExtension);
                Request request = new DownloadManager.Request(downloadUri);
                request.setTitle(fileName);
                request.setDescription(url);
                request.setMimeType(mimeType);  
                request.setDestinationInExternalPublicDir( Environment.DIRECTORY_DOWNLOADS, fileName);
                Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS).mkdirs();
                downloadManager.enqueue(request);
            }
        });

        currentUrl = url;
        edlineWebView.setWebChromeClient(new WebChromeClient() 
        {  
            public void onProgressChanged(WebView view, int progress) 
            {  
                if (progress<100)
                {
                    progressBar1.setVisibility(ProgressBar.VISIBLE);
                }
                else if (progress==100)
                {
                    progressBar1.setVisibility(ProgressBar.GONE);              
                }
                progressBar1.setProgress(progress);  
            }
        });

        edlineWebView.setWebViewClient(new WebViewClient() 
        {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                currentUrl = edlineWebView.getUrl();
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                return true;
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(completeReceiver);
    }

    @Override
    protected void onResume() {
        IntentFilter completeFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
        registerReceiver(completeReceiver, completeFilter);
        super.onResume();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case R.id.goto_browser:
            Intent i = new Intent(Intent.ACTION_VIEW);
            i.setData(Uri.parse(currentUrl));
            startActivity(i);

            return true;
        }
        return false;
    }
}

推荐答案

对于我来说,我加载了一个包含图像"滑块的网站.当滑块更改图像时,logcat也会产生相同的错误代码.我认为发生这种情况是因为网页会计算设备屏幕的大小.我只是在猜测,因为它来自gl:

In my case, I loaded a site which contains an Image slider. The logcat produces this same error code when the slider changes the images. I assume this happens, because the webpage computes the size of the screen of my device. I am just guessing, because it's from gl:

05-03 10:15:25.149: E/eglCodecCommon(5081): **** ERROR unknown type 0x1 (glSizeof,73)

这篇关于Android Webview未知错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆