Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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传递到HTML文件_Android - Fatal编程技术网

如何将参数从android传递到HTML文件

如何将参数从android传递到HTML文件,android,Android,我可以在android webview中很好地显示HTML文件内容。现在我如何将参数传递到HTML文件中。例如,我的HTML内容有一个视频播放器 我需要将动态值(URL)传递到HTML文件中以播放动态视频。我的HTML文件位于资产文件夹中。我如何才能做到这一点 谢谢。如果我想在我的HTML中有一些动态内容,我会有一个包含动态部分的HTML,如下所示: <B>%NAME%</B> String data = template.replaceAll("%NAME%", "A

我可以在android webview中很好地显示HTML文件内容。现在我如何将参数传递到HTML文件中。例如,我的HTML内容有一个视频播放器 我需要将动态值(URL)传递到HTML文件中以播放动态视频。我的HTML文件位于资产文件夹中。我如何才能做到这一点


谢谢。

如果我想在我的HTML中有一些动态内容,我会有一个包含动态部分的HTML,如下所示:

<B>%NAME%</B>
String data = template.replaceAll("%NAME%", "Alice McGee");
//The html variable has the html contents of the file stored in the assets folder
//and real_video_url string variable has the correct video url
html = html.replace("$VIDEO_URL$", real_video_url);
webview.loadData(html, "text/html", "utf-8");
然后 然后我会用我想要的替换所有动力学部件,如下所示:

<B>%NAME%</B>
String data = template.replaceAll("%NAME%", "Alice McGee");
//The html variable has the html contents of the file stored in the assets folder
//and real_video_url string variable has the correct video url
html = html.replace("$VIDEO_URL$", real_video_url);
webview.loadData(html, "text/html", "utf-8");
然后我会把它传给我的网络视图

WebView webView = new WebView(this);
webView.loadDataWithBaseURL("file:///android_asset/html/", data, "text/html", "utf-8", null);

我将在Html文件中使用标记,而不是直接传递视频URL(如下示例)。例如:

<embed src="$VIDEO_URL$" autostart="false" />

这里的资产意味着什么


String template=Utils.inputStreamToString(assets.open(“html/template.html”)

我今天遇到了这个问题,但是我需要这个来处理UTF-8编码,所以这是我的方法,希望它能帮助一些人并澄清之前对这个问题的一些答案

HTML:

至于IOUTIL:
我设法以不同的方式传递变量

我的问题是,每次我切换到另一个应用程序时,当我来到webapp时,webview都会不断地重新加载。我想这是因为我的
onCreate()
方法中有以下行:
myWebView.loadUrl(url)
我想在url中传递这些状态变量,但正如您所知,这还不可能。 我所做的是使用
onSaveInstanceState(Bundle-outState){…}
保存一些变量的状态,并使用
onRestoreInstanceState(Bundle-savedInstanceState){…}
还原它们

在设置myWebView后的onCreate方法中,我执行了以下操作:

myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String urlString)
{
     Log.i("onPageFinished", "loadVariables("+newURL+")");
     if(newURL!="")
         myWebView.loadUrl("javascript:loadVariables("+"\""+newURL+"\")");
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}
});

jsInterface = new JSInterface(this,myWebView);
myWebView.addJavascriptInterface(jsInterface, "Android");

if (savedInstanceState != null)
{
// retrieve saved variables and build a new URL
newURL = "www.yoururl.com";
newURL +="?var1=" + savedInstanceState.getInt("key1");
newURL +="?var2=" + savedInstanceState.getInt("key2");
Log.i("myWebApp","NEW URL = " + newURL);
}
myWebView.loadUrl("www.yoururl.com");
因此,首先我用默认URL(www.yoururl.com)加载页面,然后在PageFinished上调用一个新的javascript方法,在这里传递变量。 在javascript
loadVariables
中,函数如下所示:

function loadVariables(urlString){
    // if it is not the default URL
    if(urlString!="www.yoururl.com")
    {
        console.log("loadVariables: " + urlString);
        // parse the URL using a javascript url parser (here I use purl.js)
        var source = $.url(urlString).attr('source');
        var query = $.url(urlString).attr('query');  
        console.log("URL SOURCE = "+source + " URL QUERY = "+query);
        //do something with the variables 
    }
}

var flashvars={src:“我的魔法URL”,自动播放:true,controlBarAutoHide:false};这是我的HTML上的src行。我可以像这样替换“HTML=HTML.replace(“src”,real\u video\u url”);在您的情况下,如果我得到了正确的答案,您需要使用
HTML=HTML.replace(“我的Sorce url”,real\u video\u url)
而不是
html=html.replace(“src”,real\u video\u url)。请记住,不要使用任何其他标记“My Sorce URL”序列,因为
replace
方法将使用
real\u video\u URL
变量的内容在html中重新绘制它们。我尝试过你的方法。但当我运行时,它会显示黑屏(没有视频播放)??可能问题是你在webview中显示了一个视频。也许前一篇文章能帮上忙:。此外,如果你只需要显示一个视频,你可以考虑使用VooVIEW。请参阅此处以获取帮助:,请不要忘记将所需权限添加到Manifest.xml,但我的src URL是rtmp而不是HTTP。因此我认为我可以在WebView上播放rtmp视频无法导入Utils类?你能告诉我在哪里可以得到这个吗?context.getAssets()