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>
我跟着正是在告訴谷歌的例子,但它的工作......爲什麼?
謝謝!
而不應該'JsObject'是'WebAppInterface'? – varesa 2013-10-31 21:38:58
我相信它可以是任何Java類對象引用。 – Swaroop 2013-11-13 11:21:16
那麼這個名字並不重要,但這就是OP使用'@JSInterface showToast()'調用類的方法。'JSObject'沒有任何有用的方法。 – varesa 2013-11-13 12:00:47