Android版添加phonegap--Native Api插件教程
来源:互联网 发布:淘宝怎么买东西 编辑:程序博客网 时间:2024/06/07 12:39
环境:Android2.2
第三方库:PhoneGap、zxing、jqueryMobile
功能:
1)在js中调用PhoneGap提供的NativeApi,navigator.contacts.find列表显示手机联系人信息。
2)由于PhoneGap的NativeApi中没有提供二维码的扫描功能,我们自定义BarcodePlugin,来实现在js中调用扫描二维码。
查询手机联系人的关键代码:
var options = new ContactFindOptions();
options.filter = "李";
options.multiple = true;
var fields=["displayName", "phoneNumbers", "emails"];
navigator.contacts.find(fields, onSuccess, onError, options);
其中,fields表示需要查询的联系人字段,onSuccess/onError是回调(因为这个调用是异步的),options是过滤条件,如果不传表示查询所有联系人。
public class BarcodePlugin extends Plugin {
private final int CODE_REQ_BARCODE = 1;
private final int WHAT_BARCODE_SCAN = 1;
private String text;
private Object synObj = new Object();
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
if(msg == null) {
return;
}
switch (msg.what) {
case WHAT_BARCODE_SCAN:
Intent intent=new Intent(ctx.getContext(), BarcodeActivity.class);
ctx.startActivityForResult(BarcodePlugin.this, intent, CODE_REQ_BARCODE);
break;
}
};
};
public PluginResult execute(String action, JSONArray args, String callbackId) {
text = "";
handler.sendEmptyMessage(WHAT_BARCODE_SCAN);
sleep();
return new PluginResult(PluginResult.Status.OK, text);
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode == CODE_REQ_BARCODE) {
if(resultCode == Activity.RESULT_OK) {
text=intent.getExtras().getString("text");
}
weakup();
} else{
super.onActivityResult(requestCode, resultCode, intent);
}
}
private void sleep() {
try {
synchronized(synObj) {
synObj.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private void weakup(){
synchronized(synObj){
synObj.notify();
}
}
}
需要注意:execute()线程不是UI线程,不能执行UI操作(启动BarcodeActivity),这里交由handler来启动barcode扫描,然后execute线程睡眠,当扫描结束时,execute线程被唤醒,然后把扫描结果写到客户端。
KeyMob是国内专一的移动广告平台 ,基于强大的技术支持、优质的客服服务,为广告主提供精准的移动营销和应用推广服务,为应用开发者提供优质的广告展现并创造广告收入。
第三方库:PhoneGap、zxing、jqueryMobile
功能:
1)在js中调用PhoneGap提供的NativeApi,navigator.contacts.find列表显示手机联系人信息。
2)由于PhoneGap的NativeApi中没有提供二维码的扫描功能,我们自定义BarcodePlugin,来实现在js中调用扫描二维码。
查询手机联系人的关键代码:
var options = new ContactFindOptions();
options.filter = "李";
options.multiple = true;
var fields=["displayName", "phoneNumbers", "emails"];
navigator.contacts.find(fields, onSuccess, onError, options);
其中,fields表示需要查询的联系人字段,onSuccess/onError是回调(因为这个调用是异步的),options是过滤条件,如果不传表示查询所有联系人。
public class BarcodePlugin extends Plugin {
private final int CODE_REQ_BARCODE = 1;
private final int WHAT_BARCODE_SCAN = 1;
private String text;
private Object synObj = new Object();
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
if(msg == null) {
return;
}
switch (msg.what) {
case WHAT_BARCODE_SCAN:
Intent intent=new Intent(ctx.getContext(), BarcodeActivity.class);
ctx.startActivityForResult(BarcodePlugin.this, intent, CODE_REQ_BARCODE);
break;
}
};
};
public PluginResult execute(String action, JSONArray args, String callbackId) {
text = "";
handler.sendEmptyMessage(WHAT_BARCODE_SCAN);
sleep();
return new PluginResult(PluginResult.Status.OK, text);
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode == CODE_REQ_BARCODE) {
if(resultCode == Activity.RESULT_OK) {
text=intent.getExtras().getString("text");
}
weakup();
} else{
super.onActivityResult(requestCode, resultCode, intent);
}
}
private void sleep() {
try {
synchronized(synObj) {
synObj.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private void weakup(){
synchronized(synObj){
synObj.notify();
}
}
}
需要注意:execute()线程不是UI线程,不能执行UI操作(启动BarcodeActivity),这里交由handler来启动barcode扫描,然后execute线程睡眠,当扫描结束时,execute线程被唤醒,然后把扫描结果写到客户端。
KeyMob是国内专一的移动广告平台 ,基于强大的技术支持、优质的客服服务,为广告主提供精准的移动营销和应用推广服务,为应用开发者提供优质的广告展现并创造广告收入。
0 0
- Android版添加phonegap--Native Api插件教程
- Android版添加phonegap--百度api定位插件教程
- Android版添加phonegap--Crosswalk插件教程
- Android版添加phonegap--imagePicker插件教程
- Android版添加phonegap--ChildBrowser插件教程
- Android版添加phonegap--Camera插件教程
- Android版添加phonegap--ionic时间选择插件插件教程
- Android版添加phonegap-百度地图插件教程
- Android版添加phonegap-百度社会化分享插件教程
- Android版添加phonegap--百度云插件教程
- Android版添加phonegap-银联支付插件教程
- Android版添加phonegap-读取手机短信插件教程
- Android版添加phonegap---横竖屏锁定插件教程
- Android版添加phonegap--美洽客服插件教程
- Android版添加phonegap--InAndroid视频播放功能插件教程
- Android版添加phonegap--员工簿插件教程
- Android版添加phonegap--websocket客户端插件教程
- Android版添加phonegap--融云即时通讯插件教程
- 使用微信JSSDK自定义微信分享标题、描述时需要注意的问题
- ajax返回json格式时,中文乱码问题,以问号形式呈现
- 正则表达式 linux shell 删除偶数奇数行 取得最后一个字符 s/\(^.*$\)\n^.*$/\1/g
- 从通知栏进入应用中的某一页面,回退事件的处理
- <tx:annotation-driven>使用说明
- Android版添加phonegap--Native Api插件教程
- sharesdk微信分享
- 自定义控件(四)-下拉刷新与上拉加载
- Django部署到Apache后出现的访问失败的问题
- IOS开发 抛物线
- Android app的混淆打包
- C语言 字符串操作函数
- C++ Queues(队列)、Priority Queues(优先队列)
- POJ 1703 Find them, Catch them(并查集)