2017-07-04 8 views
-1

私はここから例を試しています:https://developer.android.com/guide/webapps/webview.htmlしかし、それはちょうどDoes not Work™です。WebViewのJavascriptが機能しない

これは私のActivity次のとおりです。

public class MainActivity extends Activity { 
    private static final String TAG = "browser"; 
    protected WebView wv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     wv = (WebView)findViewById(R.id.wvBrowser); 
     WebSettings webSettings = wv.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     wv.addJavascriptInterface(new WebAppInterface(this), "android"); 

     wv.loadUrl("http://192.168.3.183"); 
    } 
} 

これはWebAppInterfaceです:

public class WebAppInterface { 
    Context mContext; 

    /** Instantiate the interface and set the context */ 
    WebAppInterface(Context c) { 
     mContext = c; 
    } 

    /** Show a toast from the web page */ 
    @JavascriptInterface 
    public void showToast(String toast) { 
     Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
    } 
} 

と、最終的にはJavascriptを:

<html> 
<head> 
    <title>Android JavaScript Scan Test</title> 
</head> 
<body> 
<h3>Scan Test</h3> 
<input id="barcode"> 

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 

<script type="text/javascript"> 
    f = 0; 
    function showAndroidToast(toast) { 
     document.getElementById("barcode").value = typeof(Android) + (f++); 

     Android.showToast(toast); 
    } 
</script> 
</body> 
</html> 

そして、それは私を与えるすべてがundefined0あり、undefined1明らかに、Androidオブジェクトは私のWebViewで利用できません。

何か不足していますか?

+1

"android"でコールバックを登録し、大文字の "Android"で使用しようとしました。名前を同じにする必要があります。 – MatPag

+0

@MatPagあなたが答えを出すなら、それを受け入れることができます。明らかにAndroidのドキュメントには間違いがあります(このコードはそのままです)。 –

+0

完了、幸運:) – MatPag

答えて

2

androidでコールバックを登録し、大文字のAndroidで使用しようとしました。

名前はJavascriptインターフェイスが機能するためには同じである必要があります。現在、Androidドキュメントの例にバグがあります

関連する問題