博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android:Cordova Android, hello Cordova ,PhoneGap android
阅读量:7002 次
发布时间:2019-06-27

本文共 8367 字,大约阅读时间需要 27 分钟。

文章来自:

官方文档:

intbird的俩DEMO:

下载安装nodeJS:

https://nodejs.org/

下载安装cordova:

$ sudo npm install -g cordova

创建项目:

$ cordova create hello com.example.hello HelloWorld

加入平台支持:

$ cordova platform add ios$ cordova platform add amazon-fireos$ cordova platform add android$ cordova platform add blackberry10$ cordova platform add firefoxos

Android Studio导入项目执行OK.

一路next;能够安装官方 guides 导入android目录;

这里写图片描写叙述

改动界面;

改动assert下 index.html,加入两个button

    

加入js事件 方式一,方式二文章末尾;

note: exec 中的第三个參数为res下config.xml文件配置的功能名称;

改动index.js

function onPageLoad(){
document.addEventListener("deviceready", handle, false);}function handle(){
console.log("deviceready"); document.addEventListener("resume",onResume,false);}function onResume(){
showToast("onResume");}function btnStartActivity(arg){
var calssName = ""; switch(arg){ case 'web': calssName = "com.intbird.soft.cordovar.WebViewActivity" break; case 'camera': calssName = "com.intbird.soft.cordovar.CameraActivity"; break; default: showToast('ERROR'); break; } if("" != calssName) cordova.exec(resultSuccess,resultError,"CallActivityPlugin","call",[calssName]);}function resultSuccess(result){
showToast("success "+result);}function resultError(error){
showToast("error "+error);}function showToast(message){
cordova.exec(null, null, "ToastPlugin", "toast", [ message ]);}

Plugin插件编写;

如上面的
cordova.exec(null, null, “ToastPlugin”, “toast”, [ message ]);

这里写图片描写叙述

弹出提示

package com.intbird.soft.cordoca.plugins;import android.widget.Toast;import org.apache.cordova.CallbackContext;import org.apache.cordova.CordovaPlugin;import org.json.JSONArray;import org.json.JSONException;/** * Created by intbird on 15/6/11. */public class ToastPlugin extends CordovaPlugin {
public static final String ACTION = "toast"; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals(ACTION)) { Toast.makeText(cordova.getActivity(), args.getString(0), Toast.LENGTH_SHORT).show(); } return true; }}

调用Activity

package com.intbird.soft.cordoca.plugins;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import org.apache.cordova.CallbackContext;import org.apache.cordova.CordovaPlugin;import org.apache.cordova.PluginResult;import org.json.JSONArray;import org.json.JSONException;/** * Created by intbird on 15/6/11. */public class CallActivityPlugin extends CordovaPlugin {
public static final String ACTION = "call"; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if(this.cordova.getActivity().isFinishing()) return true; if(action.equals(ACTION)){ try{ Intent intent = new Intent(cordova.getActivity(),Class.forName(args.getString(0))); this.cordova.startActivityForResult(this,intent,-1); PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT); mPlugin.setKeepCallback(true); callbackContext.sendPluginResult(mPlugin); callbackContext.success("activity started"); callbackContext.error("activity not start."); }catch(Exception ex){ ex.printStackTrace(); return false; } } return true; } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (resultCode){ case Activity.RESULT_OK: Bundle b = intent.getExtras(); String str = b.getString("changge01"); break; default: break; } }}

配置插件;

在 res/xml/config.xml中加入feature配置,同一时候改动背景色和其它标志

Cordoca
A sample Apache Cordova application that responds to the deviceready event.
Apache Cordova Team
feature name="Whitelist">

报错;

06-11 17:47:24.708 12895-12895/com.intbird.soft.cordoca I/chromium﹕ [INFO:CONSOLE(41)] “Refused to execute inline event handler because it violates the following Content Security Policy directive: “default-src ‘self’ data: gap: ‘unsafe-eval’”. Note that ‘script-src’ was not explicitly set, so ‘default-src’ is used as a fallback.

“, source: file:///android_asset/www/index.html (41)

06-11 17:47:24.708  12895-12895/com.intbird.soft.cordoca I/chromium﹕ [INFO:CONSOLE(41)] "Refused to execute inline event handler because it violates the following Content Security Policy directive: "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.    ", source: file:///android_asset/www/index.html (41)

直接凝视掉 index.html meta 第一行,又一次执行;

            
Hello World

AndroidManifest.xml

xml version='1.0' encoding='utf-8'?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.intbird.soft.cordovar" android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1"> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true"> <activity android:name="MainActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:theme="@android:style/Theme.Holo.Light" android:windowSoftInputMode="adjustResize"> <intent-filter android:label="@string/launcher_name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".CameraActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:theme="@android:style/Theme.Holo.Light" android:windowSoftInputMode="adjustResize"></activity> <activity android:name="WebViewActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:theme="@android:style/Widget.WebView" android:windowSoftInputMode="adjustResize"></activity> </application> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" /> </manifest>

执行点击未处理默认提示,相机和webview见demo;

这里写图片描写叙述

简单demo副本.

加入js事件方式二:

将插件函数独立出来在指定js文件里

改动前:
function showToast(message){
cordova.exec(null, null, “ToastPlugin”, “toast”, [ message ]);
}
改动后:
function showToast(message){
navigator.window.show(null, null, “ToastPlugin”, “toast”, [ message ]);

1.创建assert/www/plugins/intbird-plugins-package

2,在1目录内加入 showtoast.js文件;

cordova.define("intbird-plugins-package.showtoast", function(require, exports, module) {
var exec = require('cordova/exec');var showToast = function(message) {
exec(null,null,"ToastPlugin","toast",[message]);};module.exports = showToast;});

3,配置插件文件cordova_plugins,

cordova_plugins.js文件

{        "file": "plugins/intbird-plugin-package/showtoast.js",        "id": "intbird-plugins-package.showtoast",        "clobbers": [            "window.showToast"        ]    }module.exports.metadata = // TOP OF METADATA{    "cordova-plugin-whitelist": "1.0.0",    "intbird-plugins-package": "1.0.0",}

界面中使用

window.showToast(“Toast message”);
//note: “clobbers”: [ “window.showToast”]

demo:

文章来自 :

你可能感兴趣的文章
学习jQueryUI
查看>>
设计模式入门
查看>>
【函数式 Swift】可选值
查看>>
对使用Redux和Redux-saga管理状态的思考
查看>>
vscode中执行gulp的task
查看>>
intelli idea mac 的安装与配置
查看>>
说说如何使用 Tomcat 搭建文件服务器
查看>>
Vitalik探讨改进以太坊Casper CBC协议
查看>>
猎头最爱问的java面试题附答案(三)
查看>>
说说你生活中高颜值的程序员?
查看>>
从科学记数法到浮点数标准IEEE 754
查看>>
Netty杂记1—BIO网络编程
查看>>
Vue: Binding与Watcher
查看>>
Swift泛型定义 同时限定T的类(class)和多协议(protocol)
查看>>
从闭包函数的变量自增的角度 - 解析js垃圾回收机制
查看>>
pip安装报错return _setlocale(category, locale)locale.Error: unsupported locale setti
查看>>
在 Create React App 项目中使用 Prettier
查看>>
表格数据处理的2种写法,伪元素和操作dom
查看>>
LeetCode11.盛最多水的容器 JavaScript
查看>>
在Spring 5中调试Reactive Streams
查看>>