2013-03-24 51 views
1

我想從一個網頁顯示舉杯顯示在網頁視圖,就像從谷歌爲例:http://developer.android.com/guide/webapps/webview.htmlAndroid:如何使用JavaScript界面​​顯示吐司?

我已經創造了這個命名類:WebAppInterface.java

包com.test.test;

import android.annotation.TargetApi; 
import android.app.ActionBar; 
import android.os.Bundle; 
import android.content.Context; 
import android.os.Build; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.NavUtils; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 
import android.graphics.drawable.Drawable; 
import android.graphics.drawable.GradientDrawable; 
import android.graphics.Color; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.webkit.WebSettings; 
import android.webkit.WebChromeClient; 
import android.webkit.JavascriptInterface; 
import android.app.Activity; 
import android.view.KeyEvent; 
import android.app.ProgressDialog; 
import android.view.Window; 
import android.widget.Toast; 
import com.test.test.R; 

public class WebAppInterface extends Activity{ 
    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(); 
    } 
} 

,並在這裏被稱爲我的主要活動代碼MainActivity.java

class JsObject { 
    @JavascriptInterface 
    public String toString() { return "injectedObject"; } 
} 
myWebView.addJavascriptInterface(new JsObject(), "injectedObject"); 

由Web視圖加載頁面包含以下代碼:

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

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

我跟着正是在告訴谷歌的例子,但它的工作......爲什麼?

謝謝!

回答

4

使用

myWebView.addJavascriptInterface(new JsObject(), "Android"); 

JavaScript中的變量Android然後將可用。您在註冊Javascript界面​​時使用了injectedObject

http://developer.android.com/guide/webapps/webview.html

+0

而不應該'JsObject'是'WebAppInterface'? – varesa 2013-10-31 21:38:58

+0

我相信它可以是任何Java類對象引用。 – Swaroop 2013-11-13 11:21:16

+0

那麼這個名字並不重要,但這就是OP使用'@JSInterface showToast()'調用類的方法。'JSObject'沒有任何有用的方法。 – varesa 2013-11-13 12:00:47