1

Googleの例のように、ウェブビューに表示されたウェブページからトーストを表示したい: http ://developer.android.com/guide/webapps/webview.html

私はこの名前のクラスを作成しました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

1 に答える 1

4

使用する

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

javascriptでは、変数Androidが使用可能になります。injectedObject代わりに、Javascriptインターフェースの登録時に使用していました。

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

于 2013-03-25T12:30:54.170 に答える