PhoneGap中文网

 找回密码
 立即注册
查看: 11900|回复: 0

Android版添加phonegap--Native Api插件教程

[复制链接]

5

主题

5

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2015-12-29 18:10:41 | 显示全部楼层 |阅读模式
环境: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是国内专一的移动广告平台 ,基于强大的技术支持、优质的客服服务,为广告主提供精准的移动营销和应用推广服务,为应用开发者提供优质的广告展现并创造广告收入。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2024-3-28 19:28 , Processed in 0.048666 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表