分享

把CordovaWebView嵌入到自己的应用(Embedding WebViews)

 quasiceo 2015-06-24
以下以Android为例。

(1)下载最新版的Cordova-Android
https://github.com/apache/cordova-android/releases
2015/02/04 最新版:cordova-android-3.7.1.zip

(2)解压到本地C盘后,通过命令行进入C:\cordova-android-3.7.1\framework

(3)执行命令“D:/android-sdk/tools/android update project -p .”
会生成以下两个文件:
引用
local.properties
proguard-project.txt


(4)执行命令 “ant jar”
会build这个Cordova的library工程,生成cordova-3.7.1.jar
引用
C:\cordova-android-3.7.1\framework\cordova-3.7.1.jar


(5)新建一个Android工程“CordovaViewSample”,把cordova-3.7.1.jar拷贝到libs文件夹下。

(6)在res/layout/activity_main.xml文件中加入以下代码
Xml代码  收藏代码
  1. <org.apache.cordova.CordovaWebView  
  2.     android:id="@+id/tutorialView"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" />  


(7)修改Activity,可以参考CordovaActivity.java
/framework/src/org/apache/cordova/CordovaActivity.java

Java代码  收藏代码
  1. public class MainActivity extends Activity implements CordovaInterface {  
  2.       
  3.     private final ExecutorService threadPool = Executors.newCachedThreadPool();  
  4.   
  5.     // The webview for our app  
  6.     protected CordovaWebView appView;  
  7.       
  8.     // Plugin to call when activity result is received  
  9.     protected int activityResultRequestCode;  
  10.     protected CordovaPlugin activityResultCallback;  
  11.       
  12.     protected CordovaPreferences prefs = new CordovaPreferences();  
  13.     protected Whitelist internalWhitelist = new Whitelist();  
  14.     protected Whitelist externalWhitelist = new Whitelist();  
  15.     protected ArrayList<PluginEntry> pluginEntries;  
  16.   
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.activity_main);  
  21.           
  22.         appView = (CordovaWebView) findViewById(R.id.tutorialView);  
  23.           
  24.         internalWhitelist.addWhiteListEntry("*"false);  
  25.         externalWhitelist.addWhiteListEntry("tel:*"false);  
  26.         externalWhitelist.addWhiteListEntry("sms:*"false);  
  27.         prefs.set("loglevel""DEBUG");  
  28.           
  29.         appView.init(this, makeWebViewClient(appView), makeChromeClient(appView),  
  30.                 pluginEntries, internalWhitelist, externalWhitelist, prefs);  
  31.           
  32.         appView.loadUrlIntoView("http://m.jd.com/");  
  33.     }  
  34.       
  35.     protected CordovaWebViewClient makeWebViewClient(CordovaWebView webView) {  
  36.         return webView.makeWebViewClient(this);  
  37.     }  
  38.       
  39.     protected CordovaChromeClient makeChromeClient(CordovaWebView webView) {  
  40.         return webView.makeWebChromeClient(this);  
  41.     }  
  42.       
  43.     @Override  
  44.     public Activity getActivity() {  
  45.         return this;  
  46.     }  
  47.   
  48.     @Override  
  49.     public ExecutorService getThreadPool() {  
  50.         return threadPool;  
  51.     }  
  52.   
  53.     @Override  
  54.     public Object onMessage(String id, Object data) {  
  55.         if ("exit".equals(id)) {  
  56.             super.finish();  
  57.         }  
  58.         return null;  
  59.     }  
  60.   
  61.     @Override  
  62.     public void setActivityResultCallback(CordovaPlugin plugin) {  
  63.         if (activityResultCallback != null) {  
  64.             activityResultCallback.onActivityResult(activityResultRequestCode, Activity.RESULT_CANCELED, null);  
  65.         }  
  66.         this.activityResultCallback = plugin;  
  67.     }  
  68.   
  69.     @Override  
  70.     public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) {  
  71.         setActivityResultCallback(command);  
  72.         try {  
  73.             startActivityForResult(intent, requestCode);  
  74.         } catch (RuntimeException e) {  
  75.             activityResultCallback = null;  
  76.             throw e;  
  77.         }  
  78.     }  
  79.       
  80. }  


(8)修改AndroidManifest.xml
Xml代码  收藏代码
  1. <uses-permission android:name="android.permission.INTERNET" />  


(9)编译安装到手机,如下:


如果加载assets下的HTML的话,还需要:
  • 1)把HTML/Images/JS等文件拷贝到/assets/www下
  • 2)把/framework/res/xml/config.xml拷贝到/res/xml下

http://cordova./docs/en/4.0.0/guide_platforms_android_webview.md.html#Android%20WebViews
分享到:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多