`

cordova实现“再点击一次退出”效果

阅读更多
基本的写法如下:

document.addEventListener("deviceready", onDeviceReady, false);
			
function onDeviceReady() {
	//navigator.splashscreen.hide();
        document.addEventListener("backbutton", onBackKeyDown, false);                     
}
			function onBackKeyDown() {
			    Toast.showShort('再点击一次退出!');
			    document.removeEventListener("backbutton", onBackKeyDown, false); // 注销返回键
			    document.addEventListener("backbutton", exitApp, false);//绑定退出事件
			    // 3秒后重新注册
			    var intervalID = window.setInterval(function() {
			        window.clearInterval(intervalID);
			        document.removeEventListener("backbutton", exitApp, false); // 注销返回键
			        document.addEventListener("backbutton", onBackKeyDown, false); // 返回键
			    }, 3000);
			}
			function exitApp(){
			    navigator.app.exitApp();
			}



上面的代码中需要一个toast插件,这个是需要自己实现的,当然你可以使用纯JS写一个模仿android。

比如我提供一个现成的(PS:本人没有使用过,不知道有没有效果!)

/**
 * 自定义toast,js实现android中toast效果  
 * @param msg 显示文字
 * @param duration 显示的时间长度
 */
function showToast(msg, duration) {  
    duration = isNaN(duration) ? 3000 : duration;  
    var m = document.createElement('div');  
    m.innerHTML = msg;  
    m.style.cssText = "width:60%; min-width:150px; background:#000; opacity:0.5; height:40px; color:#fff; line-height:40px; text-align:center; border-radius:5px; position:fixed; top:70%; left:20%; z-index:999999; font-weight:bold;";  
    document.body.appendChild(m);  
    setTimeout(function() {  
        var d = 0.5;  
        m.style.webkitTransition = '-webkit-transform ' + d  
                + 's ease-in, opacity ' + d + 's ease-in';  
        m.style.opacity = '0';  
        setTimeout(function() {  
            document.body.removeChild(m)  
        }, d * 1000);  
    }, duration);  
}



我采用的是插件的形式:
1,用java写一个cordova插件(本人只会java,object-c不会,所以要在iphone上跑还需要用object-c写一个,这是使用插件不足的地方,不过可以网上搜一下,这种小插件基本可以搞定!)


package com.mobovip.mobile.plugin.toast;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

import android.widget.Toast;

public class ToastPlugin extends CordovaPlugin {

	private static final int TOAST_MESSAGE_INDEX = 0;
	private Toast toast = null;
	
	@Override
	public boolean execute(String action, JSONArray data,
			CallbackContext callbackContext) throws JSONException {
		
		if(action.equals("show_short")){
			String message = data.getString(TOAST_MESSAGE_INDEX);
			showToast(message, Toast.LENGTH_SHORT);
		}else if(action.equals("show_long")){
			String message = data.getString(TOAST_MESSAGE_INDEX);
			showToast(message, Toast.LENGTH_LONG);
		}else if(action.equals("cancel")){
			cancelToast();
		}
		callbackContext.success();
		return true;
	}
	
	private void showToast(final String message, final int length) {
		cordova.getActivity().runOnUiThread(new Runnable(){

			@Override
			public void run() {
				// TODO Auto-generated method stub
				 toast = Toast.makeText(cordova.getActivity(), message, length);  
	             toast.show();  
			}
			
		});
	}
	
	private void cancelToast() {  
        cordova.getActivity().runOnUiThread(new Runnable() {  
            @Override  
            public void run() {  
                if (toast != null){
                	toast.cancel();
                }
            }  
        });  
    }  
	
}



2,在res/xml/config.xml文件中增加插件配置
<feature name="Toast">
        <param name="android-package" value="com.mobovip.mobile.plugin.toast.ToastPlugin" />
    </feature>


3,在asserts/www/plugins/目录下实现自己插件的toast.js文件
cordova.define("com.mobovip.mobile.plugin.toast.Toast", function(require, exports, module) {/*global cordova, module*/
module.exports = {
    showShort: function (message, win, fail) {
        cordova.exec(win, fail, "Toast", "show_short", [message]);
    },

    showLong: function (message, win, fail) {
        cordova.exec(win, fail, "Toast", "show_long", [message]);
    },

    cancel: function (win, fail) {
        cordova.exec(win, fail, "Toast", "cancel", []);
    }
};
});


4,添加toast插件js配置信息

   在assets/www/cordova_plugins.js文件中添加如下信息:

module.exports = [
   {  
	    "file": "plugins/com.mobovip.mobile.plugin.toast/www/toast.js",  
	    "id": "com.mobovip.mobile.plugin.toast.Toast",  
	    "clobbers": [  
	        "Toast"  //Js中使用的时候变量的名称
	    ]  
   },
    .........



同时加上插件的版本:
module.exports.metadata = 
// TOP OF METADATA
{
    "com.mobovip.mobile.plugin.toast": "1.0.0", 
     .........


5,代码调用
Toast.showShort('再点击一次退出!');
分享到:
评论
1 楼 zijuan8023 2015-04-27  
我按照您的步骤添加插件 为什么卡在connecting to device不动了

相关推荐

    在存在iOS项目添加Cordova实现H5调用设备相册

    在iOS项目中集成Cordova并实现H5调用设备相册的功能,是移动应用开发中的一个常见需求。Cordova是一个开源框架,它允许开发者使用HTML、CSS和JavaScript来构建原生移动应用程序。通过Cordova,我们可以利用Web技术来...

    Cordova 实现第三方登录及其分享.pdf

    cordova 微信分享、支付、登录 .新浪微博登录、分享 . QQ 登录 、分享 .使用cordova插件.相关js 文档.只针对移动应用JS 提供SDK ,JS SDK 表面上是最方便cordova 项目实现的,但在授权是通过网页的,其实session还需要...

    Cordova 实现第三方登录及其分享.docx

    ### Cordova 实现第三方登录及其分享 #### 摘要 本文主要介绍如何利用Cordova框架结合QQ、微信以及微博的官方SDK实现第三方登录及分享功能。重点对比了JavaScript SDK与原生SDK(如Android SDK和iOS SDK)的实现...

    cordova跳转原生Activity

    在Cordova的应用中,有时我们需要调用原生的Android Activity来实现特定功能,例如访问设备硬件或利用原生库。本篇文章将详细介绍如何在Cordova中进行原生Activity的跳转,以及`HjkPlugin`可能涉及的相关知识点。 ...

    cordova android 扫一扫

    在本示例中,我们关注的是如何在Cordova项目中实现“扫一扫”功能,这通常涉及到条形码或二维码扫描。 在Cordova中添加特定功能通常通过安装插件来实现,对于“扫一扫”功能,我们需要安装一个支持扫描的插件。常用...

    Cordova(ionic)项目实现双击返回键退出应用

    在Cordova(ionic)项目中实现双击返回键退出应用是一个在移动应用开发中经常会遇到的需求,特别是对于Android平台。用户在使用应用时,有时会期待通过双击返回键能够快速退出程序,然而在Cordova项目中,这一需求实现...

    cordova二维码扫描插件

    Cordova二维码扫描插件是这一理念的体现,它允许开发者使用熟悉的Web技术快速实现复杂的设备功能,同时保持良好的性能和兼容性。 在实际应用中,开发者可以进一步扩展这个插件,例如添加对条形码的支持,优化扫描...

    cordova显示角标插件

    在iOS和Android系统中,系统级别的通知管理通常会自动处理角标的显示和更新,但在Cordova应用中,由于是基于Web技术开发,我们需要借助特定的插件来实现这一功能。"cordova-plugin-badge"便是这样一个插件,它提供了...

    cordova框架以及插件

    Cordova 框架提供了基础架构,让开发者能够编写一次代码,然后在多个平台上运行,包括 iOS、Android、Windows Phone 等。Cordova 4.0 版本是一个重要的里程碑,引入了对最新技术的支持和改进的性能。 描述中的 ...

    PODSDemo by CordovaPlugin

    【标题】"PODSDemo by CordovaPlugin"是一个基于Cordova框架的项目示例,它演示了如何在iOS开发环境中通过CocoaPods来管理和集成Cordova插件。CocoaPods是Objective-C和Swift项目的依赖管理工具,使得开发者能够方便...

    cordova-screenshot cordova截屏插件

    cordova-screenshot cordova截屏插件 document.addEventListener("deviceready", init, false); function init() { document.querySelector("#share").addEventListener("touchend", function() { navigator....

    cordova-plugin-wechat-master

    在这个案例中,“cordova-plugin-wechat”就是这样一个插件,它在JavaScript层提供了一个简单易用的API,用于调用微信的各种功能,而在Android和iOS平台上,它会调用对应的微信SDK实现与微信服务器的交互。...

    Cordova打包ios平台

    1. **Cordova 框架**: Cordova 提供了一个原生的外壳,用于封装基于 Web 的应用,并使其能够访问设备的功能,如摄像头、GPS 和联系人等。 2. **平台支持**: Cordova 支持多种操作系统,包括 iOS、Android、Windows ...

    cordova实现打包安卓apk文件

    cordova打包apk

    cordova_weibo代码

    《Cordova微博分享与登录实现详解》 Cordova是一款开源的移动应用开发框架,它允许开发者使用HTML5、CSS3和JavaScript来构建跨平台的原生移动应用。在这个项目“cordova_weibo”中,我们将深入探讨如何在Cordova...

    Android版cordova人脸识别插件

    本文将深入探讨一个特定的 Android 版 Cordova 插件——人脸识别插件,以及如何在实际项目中使用它。 首先,让我们理解人脸识别技术的基本原理。人脸识别是一种生物特征识别技术,它基于人的面部特征信息进行身份...

    cordova-js-master

    Cordova-js-master 是一个针对Cordova框架的源代码仓库,主要服务于C#开发者,用于构建跨平台的移动应用,支持Android和iOS操作系统。Cordova是一个开源的移动开发框架,它允许开发者使用HTML5、CSS3和JavaScript来...

    cordova-android-3.6.4

    Cordova Android 3.6.4 是该框架针对 Android 平台的一个特定版本,它在2014年发布,是 Cordova 3.x 系列中的一个重要里程碑。这个版本提供了对当时 Android 系统的广泛支持,并且为开发者提供了与原生 Android 功能...

    Cordova 3.x入门

    Cordova的实用插件部分覆盖了Google地图、二维码、社交分享、自定义URL Scheme等多个插件,这些都是Cordova生态中重要的组成部分,能够帮助开发者快速实现丰富的功能。 源码分析部分则是对于想要深入理解Cordova...

Global site tag (gtag.js) - Google Analytics