`
CshBBrain
  • 浏览: 650145 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
B7d9bf34-126e-301f-819e-81f2615b5a2a
开源WebSocket服务...
浏览量:144910
Group-logo
HTML5移动开发
浏览量:137862
社区版块
存档分类
最新评论

Android的webview加载本地html、本apk内html和远程URL

 
阅读更多

转自:http://blog.csdn.net/windone0109/article/details/5380843

 

首先在layout文件夹下的xml中 加入Java代码 

 

[java] view plaincopy
  1.  <WebView  
  2. android:id="@+id/wv1"  
  3. android:layout_width="fill_parent"  
  4. android:layout_height="fill_parent"  
  5. />   

 

Java代码 

[java] view plaincopy
  1. public class jsWebDemo extends Activity {     
  2.     /** Called when the activity is first created. */    
  3.     @Override    
  4.     public void onCreate(Bundle savedInstanceState) {     
  5.         super.onCreate(savedInstanceState);     
  6.         setContentView(R.layout.main);      
  7.         WebView wView = (WebView)findViewById(R.id.wv1);     
  8.              
  9.         ProxyBridge pBridge = new ProxyBridge();     
  10.         wView.addJavascriptInterface(pBridge, "AliansBridge");     
  11.              
  12.         WebSettings wSet = wView.getSettings();     
  13.         wSet.setJavaScriptEnabled(true);     
  14.              
  15.         wView.loadUrl("file:///android_asset/index.html");     
  16.              
  17.     }     
  18.     
  19.     public class ProxyBridge {     
  20.         public int one () {     
  21.             return 1;     
  22.         }     
  23.     }     
  24.     
  25. }    
  26.   
  27. public class jsWebDemo extends Activity {  
  28.     /** Called when the activity is first created. */  
  29.     @Override  
  30.     public void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.main);   
  33.         WebView wView = (WebView)findViewById(R.id.wv1);  
  34.           
  35.         ProxyBridge pBridge = new ProxyBridge();  
  36.         wView.addJavascriptInterface(pBridge, "AliansBridge");  
  37.           
  38.         WebSettings wSet = wView.getSettings();  
  39.         wSet.setJavaScriptEnabled(true);  
  40.           
  41.         wView.loadUrl("file:///android_asset/index.html");  
  42.           
  43.     }  
  44.   
  45.  public class ProxyBridge {  
  46.   public int one () {  
  47.    return 1;  
  48.   }  
  49.  }  
  50.   
  51. }   

 

 

 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代码 

[xhtml] view plaincopy
  1. <html><body>     
  2. <div id="output">Test page.</div>     
  3. <input type="submit" value="change to 1" onclick="document.getElementById('output').innerHTML = AliansBridge.one()" />     
  4. </body></html>    
  5.   
  6. <html><body>  
  7. <div id="output">Test page.</div>  
  8. <input type="submit" value="change to 1" onclick="document.getElementById('output').innerHTML = AliansBridge.one()" />  
  9. </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代码 

[java] view plaincopy
  1. public class webJsDemo extends Activity {     
  2.     /** Called when the activity is first created. */    
  3.     private WebView mWebView;     
  4.      private Handler mHandler = new Handler();        
  5.           
  6.     @Override    
  7.     public void onCreate(Bundle savedInstanceState) {     
  8.         super.onCreate(savedInstanceState);     
  9.         setContentView(R.layout.main);     
  10.         mWebView = (WebView) findViewById(R.id.wv1);        
  11.              
  12.         WebSettings webSettings = mWebView.getSettings();        
  13.         webSettings.setSavePassword(false);        
  14.         webSettings.setSaveFormData(false);        
  15.         webSettings.setJavaScriptEnabled(true);        
  16.         webSettings.setSupportZoom(false);        
  17.             
  18.         mWebView.setWebChromeClient(new MyWebChromeClient());        
  19.        
  20.         mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");        
  21.        
  22.         mWebView.loadUrl("file:///android_asset/demo.html");        
  23.     }        
  24.        
  25.     final class DemoJavaScriptInterface {        
  26.        
  27.         DemoJavaScriptInterface() {        
  28.         }        
  29.        
  30.         /**     
  31.          * This is not called on the UI thread. Post a runnable to invoke     
  32.          * loadUrl on the UI thread.     
  33.          */       
  34.         public void clickOnAndroid() {       
  35.                  
  36.             mHandler.post(new Runnable() {        
  37.                 public void run() {        
  38.                     mWebView.loadUrl("javascript:wave()");        
  39.                 }        
  40.             });        
  41.        
  42.         }        
  43.     }        
  44.        
  45.     /**     
  46.      * Provides a hook for calling "alert" from javascript. Useful for     
  47.      * debugging your javascript.     
  48.      */       
  49.     final class MyWebChromeClient extends WebChromeClient {        
  50.         @Override    
  51.         public boolean onJsAlert(WebView view, String url, String message,     
  52.                 JsResult result) {     
  53.             // TODO Auto-generated method stub     
  54.             Log.d("aa", message);       
  55.             Log.d("url", url);     
  56.             Log.d("result"""+result);     
  57.                  
  58.             result.confirm();      
  59.         return super.onJsAlert(view, url, message, result);     
  60.                  
  61.         }     
  62.     
  63.              
  64.     }       
  65.   
  66. public class webJsDemo extends Activity {  
  67.     /** Called when the activity is first created. */  
  68.  private WebView mWebView;  
  69.   private Handler mHandler = new Handler();     
  70.     
  71.     @Override  
  72.     public void onCreate(Bundle savedInstanceState) {  
  73.         super.onCreate(savedInstanceState);  
  74.         setContentView(R.layout.main);  
  75.         mWebView = (WebView) findViewById(R.id.wv1);     
  76.           
  77.         WebSettings webSettings = mWebView.getSettings();     
  78.         webSettings.setSavePassword(false);     
  79.         webSettings.setSaveFormData(false);     
  80.         webSettings.setJavaScriptEnabled(true);     
  81.         webSettings.setSupportZoom(false);     
  82.          
  83.         mWebView.setWebChromeClient(new MyWebChromeClient());     
  84.     
  85.         mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");     
  86.     
  87.         mWebView.loadUrl("file:///android_asset/demo.html");     
  88.     }     
  89.     
  90.     final class DemoJavaScriptInterface {     
  91.     
  92.         DemoJavaScriptInterface() {     
  93.         }     
  94.     
  95.         /**   
  96.          * This is not called on the UI thread. Post a runnable to invoke   
  97.          * loadUrl on the UI thread.   
  98.          */    
  99.         public void clickOnAndroid() {    
  100.            
  101.             mHandler.post(new Runnable() {     
  102.                 public void run() {     
  103.                     mWebView.loadUrl("javascript:wave()");     
  104.                 }     
  105.             });     
  106.     
  107.         }     
  108.     }     
  109.     
  110.     /**   
  111.      * Provides a hook for calling "alert" from javascript. Useful for   
  112.      * debugging your javascript.   
  113.      */    
  114.     final class MyWebChromeClient extends WebChromeClient {     
  115.         @Override  
  116.   public boolean onJsAlert(WebView view, String url, String message,  
  117.     JsResult result) {  
  118.    // TODO Auto-generated method stub  
  119.          Log.d("aa", message);    
  120.          Log.d("url", url);  
  121.          Log.d("result"""+result);  
  122.            
  123.             result.confirm();   
  124.   return super.onJsAlert(view, url, message, result);  
  125.               
  126.   }  
  127.   
  128.     
  129.     }      

 

其中上面的代码 也提到了怎么在android中调试js  mWebView.setWebChromeClient(new MyWebChromeClient());  

上面的代码来源于别人的实例。

最后还要注意在这个实例中demo.html和两个image应该在同一个文件夹asset下

 

转自:http://blog.csdn.net/windone0109/article/details/5380941

 

首先在layout文件夹下的xml中 加入WebView控件

 

 

[xhtml] view plaincopy
  1. <WebView     
  2. android:id="@+id/wv1"    
  3. android:layout_width="fill_parent"    
  4. android:layout_height="fill_parent"    
  5. />  

 

 

再在主文件中输入如下代码

 

 

[java] view plaincopy
  1. public class TestDemo extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.   
  4.     @Override  
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.main);  
  8.   
  9.         WebView wView = (WebView)findViewById(R.id.wv1);     
  10.         WebSettings wSet = wView.getSettings();     
  11.         wSet.setJavaScriptEnabled(true);     
  12.                      
  13.         //wView.loadUrl("file:///android_asset/index.html");    
  14.         //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");  
  15.         wView.loadUrl("http://wap.baidu.com");  
  16.   
  17.     }  
  18.   
  19. }  

 

 

//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

 

加载asset中的文件字体以及使用

 

  1. AssetManager manager=this.getAssets();     
  2. try    
  3. {     
  4. manager.open("tahoma.ttf");     
  5. TextView tv=(TextView)this.findViewById(R.id.testMe);     
  6. tv.setTypeface(Typeface.createFromAsset(manager, "tahoma.ttf"));     
  7. tv.setTextSize(50f);     
  8. tv.setText(ArabicUtilities.reshape("adsdads الحمد لله asdad"));     
  9. }catch(Exception ex){     
  10. //TODO     
  11. }    
分享到:
评论

相关推荐

    Android编程实现使用webView打开本地html文件的方法

    综上所述,Android中的WebView是一个强大的组件,它可以加载本地或远程的HTML资源,通过JavaScript与应用程序进行交互,并提供了丰富的功能,如加载进度、自定义处理链接等。理解并熟练运用WebView,对于开发包含Web...

    Android_WebView安全攻防指南2020.pdf

    - **URL校验不当**:如果未正确验证加载的URL,攻击者可以引导WebView加载恶意网站,从而控制用户界面或执行恶意操作。 - **文件访问权限**:如果不当配置WebView的`setAllowFileAccess`、`...

    android webviewDemo

    - 除了加载远程URL,`WebView` 还能加载本地的HTML文件。例如,`loadDataWithBaseURL(null, "&lt;html&gt;...&lt;/html&gt;", "text/html", "utf-8", null)` 或 `loadDataFromAsset("filename.html")` 加载assets目录下的HTML...

    androidstudio打包html成为apk

    // 或者加载远程URL // webview.loadUrl("https://www.shikexu.com"); setContentView(webview); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_...

    Android-Web-Inspector:如何检查Android WebView,网络日志,XHR日志(包括url请求和参数)和ElementDOM检查

    它说明了如何在Android WebView上检查诸如检查元素/ DOM,XHR记录器和网络记录器之类的页面。 Android提供了Javascript接口功能,该功能允许我们通过java创建javascript函数,或从javascript调用java函数并通过java...

    C# Android 嵌套H5网页 Android端外壳

    本项目就是这样一个例子,它使用C#进行Android开发,创建了一个Android外壳应用,该应用内嵌了WebView来加载和展示H5网页。通过这个项目,我们可以学习到以下关键知识点: 1. **Android WebView组件**:WebView是...

    WebView的基本详细使用

    `WebView`不仅能够加载远程URL,还可以加载本地HTML文件,实现一些定制化的交互功能。本教程将深入探讨`WebView`的配置与使用,并提供详细的注释,帮助开发者更好地理解和掌握这一组件。 1. **初始化和设置WebView*...

    webview网站全屏显示

    - WebView是Android SDK中的一个类,它继承自ViewGroup,可以加载本地HTML文件或远程URL。 - 初始化WebView,通常在XML布局文件中声明或在代码中动态创建并添加到视图层级中。 - 加载网页,通过调用`loadUrl()`...

    Android应用源码之WebViewDemo.zip

    3. **加载网页内容**:`WebView`提供了`loadUrl`方法来加载网页,可以是本地HTML文件或者远程URL,如`webView.loadUrl("http://www.example.com")`。 4. **WebView的回调方法**:`WebViewClient`类提供了多个回调...

    将HTML5封装成android应用APK文件的几种方法.pdf

    - 通过`loadUrl()`方法加载网页,可以是远程URL或本地HTML文件,例如`webView.loadUrl("http://www.example.com");`或`webView.loadUrl("file:///android_asset/index.html");` - 设置`setContentView(webview);`...

    安卓浏览器WebViewJSHTML5相关-webview全屏播放网络视频.rar

    另外,应限制WebView加载的内容来源,防止恶意网站的注入。 8. **问题调试**:描述中提到"部分代码功能进行参考学习",这意味着提供的源码可能并非完整可用的解决方案,开发者需要根据自己的需求进行调整和适配。...

    androidstudio 打包h5 网页地址

    - 加载H5网页地址,可以是本地存储的HTML文件,也可以是远程URL: ```java WebView webView = findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(...

    Android应用源码之使用html5得到手机设备信息的.zip

    开发者可以创建一个WebView对象,设置其布局和属性,然后通过loadUrl方法加载包含HTML5代码的本地或远程页面。HTML5提供了许多API,如navigator对象,可以用于获取设备信息,如设备型号、操作系统版本、屏幕分辨率等...

    分享几个Android开发有用的程序代码

    【webview加载本地html、本apk内html和远程URL】 代码如下: // 打开本包内asset目录下的index.html文件 wView.loadUrl(“file:///android_asset/index.html “); // 打开本地sd卡内的index.html文件 wView.loadUrl...

    Android启动http运行vue程序.rar

    6. **调试与优化**:Android Studio提供了一系列工具,如Chrome DevTools,可以远程调试WebView中的Vue应用,进行性能优化和问题排查。 7. **安全与性能**:为了提高安全性,可以考虑使用HTTPS而非HTTP,尽管对于...

    Android应用开发新路线(用HTML5开发Android应用)

    开发者可以通过WebView加载自定义的HTML5应用,同时利用JavaScript接口与Android原生代码进行交互,实现更丰富的功能。 接着,HTML5的离线存储特性,如AppCache和IndexedDB,允许应用在没有网络连接的情况下依然...

    Android Web应用

    在Android应用中,通常会创建一个WebView实例,并设置其属性,例如加载本地或远程URL,启用JavaScript支持,以及设置WebChromeClient和WebViewClient来处理页面加载事件。 描述中的"web功能demo"可能包含了一个展示...

    安卓浏览器WebViewJSHTML5相关-android通过js调用安卓系统功能.rar

    - WebView加载网页:`WebView.loadUrl("http://www.example.com")` - 启用JavaScript:`webSettings.setJavaScriptEnabled(true)` - 监听页面加载状态:`webView.setWebChromeClient(new WebChromeClient())` 和 ...

    android_external_chromium-webview

    - **WebView API**:提供丰富的Java API供Android应用与Webview交互,如加载URL、注入JavaScript代码、拦截请求等。 - **隐私和安全**:支持HTTPS、TLS、Do Not Track等安全特性,保护用户隐私。 6. **调试与优化...

    安卓应用嵌套浏览器实现app应用

    除了加载远程URL,我们还可以加载存储在应用资源目录下的HTML文件: ```java AssetManager assets = getAssets(); InputStream input = null; try { input = assets.open("local.html"); String ...

Global site tag (gtag.js) - Google Analytics