Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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/android/229.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
Java android修改webview的url内容_Java_Android_Webview - Fatal编程技术网

Java android修改webview的url内容

Java android修改webview的url内容,java,android,webview,Java,Android,Webview,我的问题是发送url请求、捕获结果、修改结果并在java应用程序的webview中显示它。 我有一个大的应用程序,使用了带有OpenGL ES的C++代码,用于“本地游戏”,并且针对不同的目标设备建立了不同的前端构建。 在我的Android版本中,我想添加一些类似新闻页面的内容。为此,我有一个新闻服务器。我向我的服务器url发送请求(包含平台版本、语言代码等的特定slug),并以.json格式接收数据,我必须使用自己的标题、横幅、样式等格式化数据 例如->URL请求->返回我 { "st

我的问题是发送url请求、捕获结果、修改结果并在java应用程序的webview中显示它。 我有一个大的应用程序,使用了带有OpenGL ES的C++代码,用于“本地游戏”,并且针对不同的目标设备建立了不同的前端构建。 在我的Android版本中,我想添加一些类似新闻页面的内容。为此,我有一个新闻服务器。我向我的服务器url发送请求(包含平台版本、语言代码等的特定slug),并以.json格式接收数据,我必须使用自己的标题、横幅、样式等格式化数据

例如->URL请求->返回我

{
    "status": "success",
    "data": {
        "general":[
            {
                "news_id": "31",
                "title": "The title of my news",
                "text":"news Text.."
            } 
            ... 
        ]
    }
}
到目前为止,我有一个DialogFragment类,它包含一个WebView作为成员。我使用了WebViewClient类,但最终在显示结果之前无法捕获结果。 每次我看到WebView/WebViewClient的文档时,我都在寻找一个点,那就是我可以偷偷地得到url结果


有人能帮我用简单的代码解释一下这项网络技术吗?甚至能帮我详细解决我的问题吗?

我发现我的方法对于我的问题来说是复杂的(感谢MH.给我指出这一点)

相反,我通过HttpClient捕获URL请求,解析它并将其作为html字符串直接提供给视图。不幸的是,这必须在一个单独的线程中完成(或者使用外部java源代码,比如)

类NewsLoaderTask扩展了异步任务{

private WebView webView;

public void init(WebView _webView)
{
    webView = _webView;
}

protected String doInBackground(String... urlStrings) {
    try {
        URI webUrl = new URI(urlStrings[0]);
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response = httpclient.execute(new HttpGet(webUrl));
        StatusLine statusLine = response.getStatusLine();
        if(statusLine.getStatusCode() == HttpStatus.SC_OK){
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            response.getEntity().writeTo(out);
            String responseString = out.toString();
            out.close();

            return responseString;
        } else{
            //Closes the connection.
            response.getEntity().getContent().close();
            throw new IOException(statusLine.getReasonPhrase());
        }
    } catch (Exception e)
    {
        Log.i("NewsFragment", "exepction: " + e.toString());
    }
    return "";
}

protected void onPostExecute(String result) {
    // TODO parse my text

    // The baseurl points to the path with the .css and as entry point for gfx
    webView.loadDataWithBaseURL("file:///android_asset/html/library/", outputString, "text/html; charset=utf-8", "UTF-8", null);
}
}

在我的WebView中,我创建了一个NewsLoaderTask实例,并用我的WebView作为参数初始化它(用于显示文本)


我已经为您改进了代码格式。在输入问题的框中,实际上有一个带有控件的栏,可以用于格式化目的。或者,如果您熟悉markdown,您可以直接在文本框中格式化内容,或者。更多关于主题:您可能不想使用
WebView
来显示Json内容。相反,发出http请求,解析Json响应并用该内容填充布局。根据您试图显示的数据类型,您的版面可能至少包含横幅的
ImageView
,以及新闻项的
ListView
。有很多例子更详细地描述了这些步骤。我认为一个关键词是“过滤”网页。我发现了一个很好的教程,但这展示了如何使用图像等资源。显示的文本是什么?我也可以用我的contet加载WebView,但是我需要获取我的url的内容。我几乎可以通过在ascy线程中通过httpclient加载url来解决这个问题。但是如果我加载url,我的.css就不会加载。我将其放置在与baseUrl相同的文件夹中。到目前为止,我的代码是:webView.loadDataWithBaseURL(“file:///android_asset/html/library/main.html,outputString,“text/html;charset=utf-8”,“utf-8”,null);
NewsLoaderTask newsloaderTask = new NewsLoaderTask();
newsloaderTask.init(webView);
newsloaderTask.execute(getArguments().getString("url"));