android.webkit.WebView#addJavascriptInterface ( )源码实例Demo

下面列出了android.webkit.WebView#addJavascriptInterface ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: androidtestdebug   文件: QUnitMixTest.java
public void test通过本地资源网页执行安卓与QUnit混合测试() throws InterruptedException {
	// 找到待测应用的活动对象的引用
	Activity activity = getActivity();
	// 找到待测应用主界面上的WebView对象
       final WebView wv = (WebView)activity.findViewById(R.id.webview);
       // 注册收集测试结果的JavaScript桥接对象
       JavaScriptTestInterface jsti = new JavaScriptTestInterface();
       wv.addJavascriptInterface(jsti, "qunit");
       // 加载QUnit测试网页
       wv.loadUrl("file:///android_asset/qtest.html");
       // 等待QUnit用例执行完毕
       Thread.sleep(10000);
       // 收集QUnit测试结果
       wv.loadUrl("javascript:qunit.pushResult($('p#qunit-testresult.result').text());");
       Thread.sleep(1000);
       String value = jsti.popResult();
       // 对比QUnit结果中的统计数据与期望值是否匹配
       Assert.assertTrue(value.endsWith("1 assertions of 1 passed, 0 failed."));
}
 
源代码2 项目: Phantom   文件: MainActivity.java
private void initWebView() {
    mWebView = (WebView) findViewById(R.id.webview);
    WebViewResourceHelper.addChromeResourceIfNeeded(this);
    final WebSettings settings = mWebView.getSettings();
    settings.setSupportZoom(true);
    settings.setBuiltInZoomControls(true);
    settings.setUseWideViewPort(true);
    settings.setJavaScriptEnabled(true);
    mWebView.setWebChromeClient(new WebChromeClient());
    mWebView.addJavascriptInterface(this, "android");
    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return super.shouldOverrideUrlLoading(view, url);
        }
    });
}
 
源代码3 项目: YCCustomText   文件: WebDataActivity.java
public void initWebView(String data) {
        WebView mWebView = findViewById(R.id.showdiarys);
        WebSettings settings = mWebView.getSettings();

        //settings.setUseWideViewPort(true);//调整到适合webview的大小,不过尽量不要用,有些手机有问题
        settings.setLoadWithOverviewMode(true);//设置WebView是否使用预览模式加载界面。
        mWebView.setVerticalScrollBarEnabled(false);//不能垂直滑动
        mWebView.setHorizontalScrollBarEnabled(false);//不能水平滑动
        settings.setTextSize(WebSettings.TextSize.NORMAL);//通过设置WebSettings,改变HTML中文字的大小
        settings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口
        //设置WebView属性,能够执行Javascript脚本
        mWebView.getSettings().setJavaScriptEnabled(true);//设置js可用
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.addJavascriptInterface(new AndroidJavaScript(getApplication()), "android");//设置js接口
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//支持内容重新布局


/******  22222222  ***********************************************************************/
        data = "</Div><head><style>img{ width:100% !important;}</style></head>" + data;//给图片设置一个样式,宽满屏
/******  2222222222  ***********************************************************************/

        mWebView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
    }
 
源代码4 项目: BigDataPlatform   文件: SystemWebViewEngine.java
private static void exposeJsInterface(WebView webView, CordovaBridge bridge) {
    if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)) {
        LOG.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old.");
        // Bug being that Java Strings do not get converted to JS strings automatically.
        // This isn't hard to work-around on the JS side, but it's easier to just
        // use the prompt bridge instead.
        return;
    }
    SystemExposedJsApi exposedJsApi = new SystemExposedJsApi(bridge);
    webView.addJavascriptInterface(exposedJsApi, "_cordovaNative");
}
 
源代码5 项目: codeexamples-android   文件: WebViewActivity.java
@Override
public void onCreate(Bundle icicle) {
	super.onCreate(icicle);
	setContentView(R.layout.main);
	browser = (WebView) findViewById(R.id.webkit);
	myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
	browser.getSettings().setJavaScriptEnabled(true);
	browser.addJavascriptInterface(new Locater(), "locater");
	browser.loadUrl("file:///android_asset/geoweb1.html");
}
 
@Override
protected WebView createRefreshableView(Context context, AttributeSet attrs) {
	WebView webView = super.createRefreshableView(context, attrs);

	// Need to add JS Interface so we can get the response back
	mJsCallback = new JsValueCallback();
	webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);

	return webView;
}
 
@SuppressLint("JavascriptInterface")
@Override
protected WebView createRefreshableView(Context context, AttributeSet attrs) {
	WebView webView = super.createRefreshableView(context, attrs);

	// Need to add JS Interface so we can get the response back
	mJsCallback = new JsValueCallback();
	webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);

	return webView;
}
 
源代码8 项目: Study_Android_Demo   文件: MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = (WebView) findViewById(R.id.webview);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setOverScrollMode(View.OVER_SCROLL_ALWAYS);
    webView.addJavascriptInterface(new AndrodJs(),"bevent");
    webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
    //参数三:mimeType
    webView.loadDataWithBaseURL("", content, "text/html", "utf-8", null);
}
 
@Override
protected WebView createRefreshableView(Context context, AttributeSet attrs) {
	WebView webView = super.createRefreshableView(context, attrs);

	// Need to add JS Interface so we can get the response back
	mJsCallback = new JsValueCallback();
	webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);

	return webView;
}
 
private static void exposeJsInterface(WebView webView, CordovaBridge bridge) {
    if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)) {
        Log.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old.");
        // Bug being that Java Strings do not get converted to JS strings automatically.
        // This isn't hard to work-around on the JS side, but it's easier to just
        // use the prompt bridge instead.
        return;            
    }
    SystemExposedJsApi exposedJsApi = new SystemExposedJsApi(bridge);
    webView.addJavascriptInterface(exposedJsApi, "_cordovaNative");
}
 
源代码11 项目: GankDaily   文件: CustomWebViewDialog.java
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final View customView;
    try {
        customView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_webview, null);
        mWebView = (WebView) customView.findViewById(R.id.webview);
        mWebView.addJavascriptInterface(new WebAppInterface(customView.getContext()),"Android");
    } catch (InflateException e) {
        throw new IllegalStateException("This device does not support Web Views.");
    }
    return mPresenter.makeOkDialog(this,customView);
}
 
源代码12 项目: sa-sdk-android   文件: SensorsDataAPI.java
@SuppressLint(value = {"SetJavaScriptEnabled", "addJavascriptInterface"})
@Override
@Deprecated
public void showUpWebView(WebView webView, JSONObject properties, boolean isSupportJellyBean, boolean enableVerify) {
    if (Build.VERSION.SDK_INT < 17 && !isSupportJellyBean) {
        SALog.d(TAG, "For applications targeted to API level JELLY_BEAN or below, this feature NOT SUPPORTED");
        return;
    }

    if (webView != null) {
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new AppWebViewInterface(mContext, properties, enableVerify), "SensorsData_APP_JS_Bridge");
        SensorsDataAutoTrackHelper.addWebViewVisualInterface(webView);
    }
}
 
源代码13 项目: Study_Android_Demo   文件: MainActivity.java
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);
        //通过反射机制,让html的js调用java代码,参数二是js定义的关键字
        webView.addJavascriptInterface(new AndroidJs(),"momo");

        webView.setWebChromeClient(new WebChromeClient(){
            //webview 处理alart
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                Log.d("momo","url:"+url);
                Log.d("momo","message:"+message);
                Log.d("momo","result:"+result.toString());
                AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).setTitle("JS标题").setMessage(message).create();
                dialog.show();
                //return true 自己处理(之后会有问题,再点击按钮就不会触发了)
                return true;
                //return false webview自己处理 不会有问题
//                return  false;
            }
        });

        //加载本地assets的html  注意:下面是asset不是assets
        webView.loadUrl("file:///android_asset/my.html");
    }
 
源代码14 项目: PicKing   文件: WebViewTask.java
public WebViewTask(Context context) {
    webView = new WebView(context);
    webView.addJavascriptInterface(new InJavaScriptLocalObj(), "get_source");
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            webView.loadUrl("javascript:window.get_source.getSource('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        }
    });
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setBlockNetworkImage(true);
    webSettings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36");
}
 
源代码15 项目: MaterialQQLite   文件: JsEngine.java
public JsEngine(Context context) {
	m_context = context;
	m_webView = new WebView(m_context);
	m_jsObject = new JsObject();
	
	WebSettings setting = m_webView.getSettings();
	setting.setJavaScriptEnabled(true);
	
	m_webView.addJavascriptInterface(m_jsObject, "JsObject");
}
 
@Override
protected WebView createRefreshableView(Context context, AttributeSet attrs) {
	WebView webView = super.createRefreshableView(context, attrs);

	// Need to add JS Interface so we can get the response back
	mJsCallback = new JsValueCallback();
	webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);

	return webView;
}
 
源代码17 项目: AndroidBase   文件: PullToRefreshWebView2.java
@SuppressLint("JavascriptInterface")
@Override
protected WebView createRefreshableView(Context context, AttributeSet attrs) {
	WebView webView = super.createRefreshableView(context, attrs);

	// Need to add JS Interface so we can get the response back
	mJsCallback = new JsValueCallback();
	webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);

	return webView;
}
 
源代码18 项目: pychat   文件: SystemWebViewEngine.java
@SuppressLint("AddJavascriptInterface")
private static void exposeJsInterface(WebView webView, CordovaBridge bridge) {
    SystemExposedJsApi exposedJsApi = new SystemExposedJsApi(bridge);
    webView.addJavascriptInterface(exposedJsApi, "_cordovaNative");
}
 
源代码19 项目: ClassSchedule   文件: Html5Activity.java
@SuppressLint("JavascriptInterface")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web);

    mSmoothProgress = findViewById(R.id.smooth_progress);

    Bundle bundle = getIntent().getBundleExtra("bundle");
    mUrl = bundle.getString("url");
    mTitle = bundle.getString("title", "");
    mJavaScriptInterface = bundle.getSerializable("javascript");

    initBackToolbar(TextUtils.isEmpty(mTitle) ? "加载中" : mTitle);

    Log.d("Url:", mUrl);
    Log.d("mTitle:", mTitle);


    mLayout = (LinearLayout) findViewById(R.id.web_layout);


    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    mWebView = new WebView(getApplicationContext());
    mWebView.setLayoutParams(params);
    mLayout.addView(mWebView);

    WebSettings mWebSettings = mWebView.getSettings();
    mWebSettings.setSupportZoom(true);
    mWebSettings.setLoadWithOverviewMode(true);
    mWebSettings.setUseWideViewPort(true);
    mWebSettings.setDefaultTextEncodingName("utf-8");
    mWebSettings.setLoadsImagesAutomatically(true);

    //调用JS方法.安卓版本大于17,加上注解 @JavascriptInterface
    mWebSettings.setJavaScriptEnabled(true);

    if (mJavaScriptInterface != null) {
        mWebView.addJavascriptInterface(mJavaScriptInterface, "android");
    }

    mWebView.setDownloadListener(new DownloadListener() {
        @Override
        public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
            downloadByBrowser(url);
        }
    });

    saveData(mWebSettings);

    newWin(mWebSettings);

    mWebView.setWebChromeClient(webChromeClient);


    mWebView.setWebViewClient(webViewClient);
    mWebView.loadUrl(mUrl);
}
 
源代码20 项目: keemob   文件: SystemWebViewEngine.java
@SuppressLint("AddJavascriptInterface")
private static void exposeJsInterface(WebView webView, CordovaBridge bridge) {
    SystemExposedJsApi exposedJsApi = new SystemExposedJsApi(bridge);
    webView.addJavascriptInterface(exposedJsApi, "_cordovaNative");
}