2

アプリ内の Web ビューで HTML ページを開く Android アプリケーションに取り組んでいます。HTML ページは assets フォルダーに保存されており、次の方法で呼び出します。

loadUrl("file:///android_asset/a.html");

これで、ページは URL (javascript) からパラメーターを受け入れるようになりました。assets フォルダー内に保存されているこの html ファイルに URL パラメーターを渡す方法を知る必要があります。次のように記述します。

loadUrl("file:///android_asset/a.html?q=2&w=3");

動作しません。他に方法はありますか?

リヤ

4

3 に答える 3

1

shaish のような同様の説明ですが、私自身のケースに適応しています:

私の問題は、別のアプリに切り替えるたびに、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");

そのため、最初にページをロードし、ページのロードが完了したときに変数を渡します。JavaScriptloadVariables関数では次のようになります。

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 
    }
}
于 2013-11-15T10:54:48.380 に答える