1、创建cs文件
在VS中,右键项目,添加新建项,选择类,给这个类命名,我们就叫他Exit.cs吧。
2、编辑cs文件
在文件里包含下面内容,这是cordova和C#代码沟通的桥梁:
using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
using WPCordovaClassLib.Cordova.JSON;
using System.Windows;//最后这一行是要退出应用所需要的,一般的插件不必包含
cs文件的主体内容:
namespace myPlugins//命名空间自选
{
public class Exit : BaseCommand//需要继承BaseCommand类,这里类名需要和文件名一致
{
public void exitApp(string options)
//用public声明方法,返回值为void,传入的参数为字符串的
{
string optVal = null;
try
{
optVal = JsonHelper.Deserialize<string[]>(options)[0];
//因为js传过来的值都经过json编码过的,这里需要解码
}
catch (Exception)
{
//异常处理
}
if (optVal == null)
{
DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
}
else
{
Application.Current.Terminate();//重点,退出应用
//返回状态,这里可以注释掉第二行,因为应用退出了,返回就没意义了。
DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "{data: \"ok\"}"));
}
}
}
}
3、配置config.xml文件
在config.xml文件里的widget元素内加入:
<feature name="Exit">
<param name="wp-package" value="myPlugins.Exit" />
</feature>
4、写js代码
var app = {
location: 'index',
initialize: function() {
this.bindEvents();
},
// `load`, `deviceready`, `offline`, and `online`.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function(){
//注册返回按钮事件
document.addEventListener('backbutton', app.onBackKeyDown, false);
},
onBackKeyDown: function(e){
switch(app.location){
case 'index':
navigator.notification.confirm(
'您确定要退出游戏吗?',
function(button){
if(button == 1){//点击了确定按钮
cordova.exec(
function(data){
//调用C#代码成功的回调函数
},
function(data){
//调用C#代码失败的回调函数
},
'myPlugins.Exit',//插件类名
'exitApp',//插件方法名
["string"]//要传递的参数
);
}
},
'提示',
['确定', '取消']
);
break;
}
}
};
app.initialize();
这里使用到了内置插件notification,还没安装的小伙伴可以到我上一篇博文里查看安装方法,点击这里
5、完工总结
这样就解决了cordova的wp8平台没提供退出应用的问题了。
当然,大家也可以基于这个例子,随心所欲地制作自己需要的插件,也可以使用plugman发布插件到互联网上分享。
来源:oschina
链接:https://my.oschina.net/u/241552/blog/182494