转自:http://blog.csdn.net/windone0109/article/details/5380843
首先在layout文件夹下的xml中 加入Java代码
- <WebView
- android:id="@+id/wv1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
Java代码
- public class jsWebDemo extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- WebView wView = (WebView)findViewById(R.id.wv1);
- ProxyBridge pBridge = new ProxyBridge();
- wView.addJavascriptInterface(pBridge, "AliansBridge");
- WebSettings wSet = wView.getSettings();
- wSet.setJavaScriptEnabled(true);
- wView.loadUrl("file:///android_asset/index.html");
- }
- public class ProxyBridge {
- public int one () {
- return 1;
- }
- }
- }
- public class jsWebDemo extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- WebView wView = (WebView)findViewById(R.id.wv1);
- ProxyBridge pBridge = new ProxyBridge();
- wView.addJavascriptInterface(pBridge, "AliansBridge");
- WebSettings wSet = wView.getSettings();
- wSet.setJavaScriptEnabled(true);
- wView.loadUrl("file:///android_asset/index.html");
- }
- public class ProxyBridge {
- public int one () {
- return 1;
- }
- }
- }
wView.addJavascriptInterface(pBridge, "AliansBridge");
上句代码是实例化一个方法为的是在html中的js中调用,第二个参数则是 实例化方法的别名,如果要使用这个pBridge,则在js中使用的名字就是AliansBridge。
WebSettings wSet = wView.getSettings();
wSet.setJavaScriptEnabled(true);
上面两句就是允许使用js的意思
wView.loadUrl(file:///android_asset/index.html);
就是在asset下放入一个index.html文件,这个文件包含js的代码,注意路径是“///”,这个android_asset不是文件夹的名字是系统自动生成的,其实就是asset文件夹的系统路径。
index.html 内容如下
Java代码
- <html><body>
- <div id="output">Test page.</div>
- <input type="submit" value="change to 1" onclick="document.getElementById('output').innerHTML = AliansBridge.one()" />
- </body></html>
- <html><body>
- <div id="output">Test page.</div>
- <input type="submit" value="change to 1" onclick="document.getElementById('output').innerHTML = AliansBridge.one()" />
- </body></html>
这里要注意 如果你只有一个方法需要被js调用
ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, "AliansBridge");
如果你需要调用好多个方法呢 这里只要
wView.addJavascriptInterface(this, "AliansBridge");
把整个android程序所在的类 本身实例化传递就可以了
这里呢可以参看附件中的实例riademo
你如果想继续扩展可以参看
http://www.ophonesdn.com/article/show/115
2.上面是javascript调用android的方法,那么android也可以调用js的方法
Java代码
- public class webJsDemo extends Activity {
- /** Called when the activity is first created. */
- private WebView mWebView;
- private Handler mHandler = new Handler();
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mWebView = (WebView) findViewById(R.id.wv1);
- WebSettings webSettings = mWebView.getSettings();
- webSettings.setSavePassword(false);
- webSettings.setSaveFormData(false);
- webSettings.setJavaScriptEnabled(true);
- webSettings.setSupportZoom(false);
- mWebView.setWebChromeClient(new MyWebChromeClient());
- mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
- mWebView.loadUrl("file:///android_asset/demo.html");
- }
- final class DemoJavaScriptInterface {
- DemoJavaScriptInterface() {
- }
- /**
- * This is not called on the UI thread. Post a runnable to invoke
- * loadUrl on the UI thread.
- */
- public void clickOnAndroid() {
- mHandler.post(new Runnable() {
- public void run() {
- mWebView.loadUrl("javascript:wave()");
- }
- });
- }
- }
- /**
- * Provides a hook for calling "alert" from javascript. Useful for
- * debugging your javascript.
- */
- final class MyWebChromeClient extends WebChromeClient {
- @Override
- public boolean onJsAlert(WebView view, String url, String message,
- JsResult result) {
- // TODO Auto-generated method stub
- Log.d("aa", message);
- Log.d("url", url);
- Log.d("result", ""+result);
- result.confirm();
- return super.onJsAlert(view, url, message, result);
- }
- }
- public class webJsDemo extends Activity {
- /** Called when the activity is first created. */
- private WebView mWebView;
- private Handler mHandler = new Handler();
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mWebView = (WebView) findViewById(R.id.wv1);
- WebSettings webSettings = mWebView.getSettings();
- webSettings.setSavePassword(false);
- webSettings.setSaveFormData(false);
- webSettings.setJavaScriptEnabled(true);
- webSettings.setSupportZoom(false);
- mWebView.setWebChromeClient(new MyWebChromeClient());
- mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
- mWebView.loadUrl("file:///android_asset/demo.html");
- }
- final class DemoJavaScriptInterface {
- DemoJavaScriptInterface() {
- }
- /**
- * This is not called on the UI thread. Post a runnable to invoke
- * loadUrl on the UI thread.
- */
- public void clickOnAndroid() {
- mHandler.post(new Runnable() {
- public void run() {
- mWebView.loadUrl("javascript:wave()");
- }
- });
- }
- }
- /**
- * Provides a hook for calling "alert" from javascript. Useful for
- * debugging your javascript.
- */
- final class MyWebChromeClient extends WebChromeClient {
- @Override
- public boolean onJsAlert(WebView view, String url, String message,
- JsResult result) {
- // TODO Auto-generated method stub
- Log.d("aa", message);
- Log.d("url", url);
- Log.d("result", ""+result);
- result.confirm();
- return super.onJsAlert(view, url, message, result);
- }
- }
其中上面的代码 也提到了怎么在android中调试js mWebView.setWebChromeClient(new MyWebChromeClient());
上面的代码来源于别人的实例。
最后还要注意在这个实例中demo.html和两个image应该在同一个文件夹asset下
转自:http://blog.csdn.net/windone0109/article/details/5380941
首先在layout文件夹下的xml中 加入WebView控件
- <WebView
- android:id="@+id/wv1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
再在主文件中输入如下代码
- public class TestDemo extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- WebView wView = (WebView)findViewById(R.id.wv1);
- WebSettings wSet = wView.getSettings();
- wSet.setJavaScriptEnabled(true);
- //wView.loadUrl("file:///android_asset/index.html");
- //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");
- wView.loadUrl("http://wap.baidu.com");
- }
- }
//wView.loadUrl("file:///android_asset/index.html");
-----打开本包内asset目录下的index.html文件
//wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");
-----打开本地sd卡内的index.html文件
//wView.loadUrl("http://wap.baidu.com");
-----打开指定URL的html文件
转自:http://blog.csdn.net/windone0109/article/details/5381170
- AssetManager manager=this.getAssets();
- try
- {
- manager.open("tahoma.ttf");
- TextView tv=(TextView)this.findViewById(R.id.testMe);
- tv.setTypeface(Typeface.createFromAsset(manager, "tahoma.ttf"));
- tv.setTextSize(50f);
- tv.setText(ArabicUtilities.reshape("adsdads الحمد لله asdad"));
- }catch(Exception ex){
- //TODO
- }
相关推荐
综上所述,Android中的WebView是一个强大的组件,它可以加载本地或远程的HTML资源,通过JavaScript与应用程序进行交互,并提供了丰富的功能,如加载进度、自定义处理链接等。理解并熟练运用WebView,对于开发包含Web...
- **URL校验不当**:如果未正确验证加载的URL,攻击者可以引导WebView加载恶意网站,从而控制用户界面或执行恶意操作。 - **文件访问权限**:如果不当配置WebView的`setAllowFileAccess`、`...
- 除了加载远程URL,`WebView` 还能加载本地的HTML文件。例如,`loadDataWithBaseURL(null, "<html>...</html>", "text/html", "utf-8", null)` 或 `loadDataFromAsset("filename.html")` 加载assets目录下的HTML...
// 或者加载远程URL // webview.loadUrl("https://www.shikexu.com"); setContentView(webview); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_...
它说明了如何在Android WebView上检查诸如检查元素/ DOM,XHR记录器和网络记录器之类的页面。 Android提供了Javascript接口功能,该功能允许我们通过java创建javascript函数,或从javascript调用java函数并通过java...
本项目就是这样一个例子,它使用C#进行Android开发,创建了一个Android外壳应用,该应用内嵌了WebView来加载和展示H5网页。通过这个项目,我们可以学习到以下关键知识点: 1. **Android WebView组件**:WebView是...
`WebView`不仅能够加载远程URL,还可以加载本地HTML文件,实现一些定制化的交互功能。本教程将深入探讨`WebView`的配置与使用,并提供详细的注释,帮助开发者更好地理解和掌握这一组件。 1. **初始化和设置WebView*...
- WebView是Android SDK中的一个类,它继承自ViewGroup,可以加载本地HTML文件或远程URL。 - 初始化WebView,通常在XML布局文件中声明或在代码中动态创建并添加到视图层级中。 - 加载网页,通过调用`loadUrl()`...
3. **加载网页内容**:`WebView`提供了`loadUrl`方法来加载网页,可以是本地HTML文件或者远程URL,如`webView.loadUrl("http://www.example.com")`。 4. **WebView的回调方法**:`WebViewClient`类提供了多个回调...
- 通过`loadUrl()`方法加载网页,可以是远程URL或本地HTML文件,例如`webView.loadUrl("http://www.example.com");`或`webView.loadUrl("file:///android_asset/index.html");` - 设置`setContentView(webview);`...
另外,应限制WebView加载的内容来源,防止恶意网站的注入。 8. **问题调试**:描述中提到"部分代码功能进行参考学习",这意味着提供的源码可能并非完整可用的解决方案,开发者需要根据自己的需求进行调整和适配。...
- 加载H5网页地址,可以是本地存储的HTML文件,也可以是远程URL: ```java WebView webView = findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(...
开发者可以创建一个WebView对象,设置其布局和属性,然后通过loadUrl方法加载包含HTML5代码的本地或远程页面。HTML5提供了许多API,如navigator对象,可以用于获取设备信息,如设备型号、操作系统版本、屏幕分辨率等...
【webview加载本地html、本apk内html和远程URL】 代码如下: // 打开本包内asset目录下的index.html文件 wView.loadUrl(“file:///android_asset/index.html “); // 打开本地sd卡内的index.html文件 wView.loadUrl...
6. **调试与优化**:Android Studio提供了一系列工具,如Chrome DevTools,可以远程调试WebView中的Vue应用,进行性能优化和问题排查。 7. **安全与性能**:为了提高安全性,可以考虑使用HTTPS而非HTTP,尽管对于...
开发者可以通过WebView加载自定义的HTML5应用,同时利用JavaScript接口与Android原生代码进行交互,实现更丰富的功能。 接着,HTML5的离线存储特性,如AppCache和IndexedDB,允许应用在没有网络连接的情况下依然...
在Android应用中,通常会创建一个WebView实例,并设置其属性,例如加载本地或远程URL,启用JavaScript支持,以及设置WebChromeClient和WebViewClient来处理页面加载事件。 描述中的"web功能demo"可能包含了一个展示...
- WebView加载网页:`WebView.loadUrl("http://www.example.com")` - 启用JavaScript:`webSettings.setJavaScriptEnabled(true)` - 监听页面加载状态:`webView.setWebChromeClient(new WebChromeClient())` 和 ...
- **WebView API**:提供丰富的Java API供Android应用与Webview交互,如加载URL、注入JavaScript代码、拦截请求等。 - **隐私和安全**:支持HTTPS、TLS、Do Not Track等安全特性,保护用户隐私。 6. **调试与优化...
除了加载远程URL,我们还可以加载存储在应用资源目录下的HTML文件: ```java AssetManager assets = getAssets(); InputStream input = null; try { input = assets.open("local.html"); String ...