当前位置:  编程技术>移动开发
本页文章导读:
    ▪ubuntu下fastboot连接机器出现no permissions fastboot解决办法        ubuntu下fastboot连接机器出现no permissions fastboot解决方法 如题,解决方法:cd到fastboot所在目录,执行sudo ./fastboot  %&^&%^,okay~ ......
    ▪ 【Cordova2.9】 扩张Contacts插件实现按ID查询        【Cordova2.9】 扩展Contacts插件实现按ID查询       PhoneGap(Cordova)的通讯录插件(contacts & Contact)提供了对本地通讯录的数据检索(contacts.find)、新增(Contact.save)和删除(Contact.remove)等功能,基本.........
    ▪ UITableView选中后色彩立即消失       UITableView选中后颜色立即消失 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //选中后反显颜色立即消失 [tv deselectRowAtIndexPath:indexPath animated:YES]; }   ......

[1]ubuntu下fastboot连接机器出现no permissions fastboot解决办法
    来源: 互联网  发布时间: 2014-02-18
ubuntu下fastboot连接机器出现no permissions fastboot解决方法

如题,解决方法:cd到fastboot所在目录,执行sudo ./fastboot  %&^&%^,okay~


    
[2] 【Cordova2.9】 扩张Contacts插件实现按ID查询
    来源: 互联网  发布时间: 2014-02-18
【Cordova2.9】 扩展Contacts插件实现按ID查询

      PhoneGap(Cordova)的通讯录插件(contacts & Contact)提供了对本地通讯录的数据检索(contacts.find)、新增(Contact.save)和删除(Contact.remove)等功能,基本实现了对本地通讯录的CRUD操作。但是在使用过程中,发现该插件并不支持对特定ID的检索功能。典型的场景是在用find()操作获取到所有的通讯录信息之后,点击指定的条目,需要查询的是该条目对应的所有信息,这时就需要通过特定ID来进行数据检索。

在find()操作中,接收两个参数fields,options,分别用来表示检索结果要包含的字段以及过滤条件。通过phonegap的源码可以看出,它对通讯录的检索条件是根据fields来做的,如果fields的值为[“*”],就在所有的字段中匹配options;如果fields的内容是一个普通的字符串数组,就在该数组所表示的字段中匹配options,返回的结果中只会包括fields数组中所给定的列信息。也就是说,find()操作并不能完成对特定ID的数据检索。只能通过自行扩展该插件来实现。

下面是对该插件的扩展,通过对该插件的扩展实现,也对PhoneGap的插件机制以及对原生插件的扩展有了全面的掌握。

首先是扩展现有的ContactManager类:

/**
 * 扩展ContactManager插件,实现附加的一些功能
 * 
 * @author dylan
 * 
 */
public class ContactManagerExtend extends ContactManager {

	private ContactAccessor contactAccessor;
	private static final String LOG_TAG = "Contact Query";

	@Override
	public boolean execute(String action, JSONArray args,
			final CallbackContext callbackContext) throws JSONException {
		boolean res = super.execute(action, args, callbackContext);
		if (!res) {
			// not support by parent
			if (this.contactAccessor == null) {
				this.contactAccessor = new ContactAccessorSdk5(this.webView,
						this.cordova);
			}
			if ("findById".equals(action)) {
				final String contactId = args.getString(0);
				Log.v(LOG_TAG, "find contact by ID[" + contactId+"]");
				this.cordova.getThreadPool().execute(new Runnable() {
					public void run() {
						JSONObject res = null;
						if (contactId != null) {
							try {
								res = contactAccessor.getContactById(contactId);
							} catch (JSONException e) {
								Log.e(LOG_TAG, "JSON fail.", e);
							}
						}
						if (res != null) {
							callbackContext.success(res);
						} else {
							callbackContext.sendPluginResult(new PluginResult(
									PluginResult.Status.ERROR, UNKNOWN_ERROR));
						}
					}
				});
			} else {
				return false;
			}
		}
		return true;
	}
}

     在该类中,重写了父类的execute(action,args,context),用于在父类不支持当前action时,接管程序的执行。

然后在config.xml中将插件类替换为我们的扩展类:

<feature name="Contacts">
   <!-- 
  <param name="android-package" value="org.apache.cordova.ContactManager"/>
   -->
  <param name="android-package" value="org.dylan.phonegap.plugins.ContactManagerExtend"/>
</feature>

 同步地,在前台js中扩展contacts插件,增加对findById()的支持:

(function(cordova) {
	var exec = cordova.require("cordova/exec");
	var argscheck = cordova.require('cordova/argscheck');
	var contacts = cordova.require("cordova/plugin/contacts");
	/**
	 * contacts plugin: findById
	 */
	contacts.findById = function(contactId, successCB, failCB) {
		argscheck.checkArgs('SFF', 'contacts.findById', arguments);
		console.log("find contact by id["+contactId+"]");
		if (!contactId) {
			failCB
					&& failCB(new ContactError(
							ContactError.INVALID_ARGUMENT_ERROR));
		} else {
			var win = function(result) {
				var model = null;
				if (result) {
					model = contacts.create(result);
				}
				successCB(model);
			};
			exec(win, failCB, "Contacts", "findById", [ contactId ]);
		}
	};
})(cordova);

 前台页面中调用该函数的代码为:

navigator.contacts.findById(contactId, function(contact){
	console.log("success..." + contact.displayName);
	//do something
}, function(){
	alert("Find Failed!");
});

 至此,对通讯录插件的扩展完成;findById()方法将会返回Contact支持的所有信息。

附:Contact信息格式(参考http://www.gafish.net/archives/990)

{
    'id': '1',
    'rawId': '17',
    'name': {
        'familyName': '加',
        'formatted': '加菲 ',
        'givenName': '菲',
        'middleName': '',
        'honorificPrefix': '',
        'honorificSuffix': ''
    },
    'displayName': 'Gafish',
    'nickname': '加菲',
    'birthday': '1999/01/01',
    'note': 'xx是个好东西',
    'phoneNumbers': [{
        'id': '1',
        'type': 'mobile',
        'value': '13888888888',
        'pref': false
    }],
    'emails': [{
        'id': '1',
        'type': 'home',
        'value': 'gafish@xx.com',
        'pref': false
    }],
    'addresses': [{
        'id': '1',
        'type': 'home',
        'pref': false,
        'postalCode': '310000',
        'formatted': 'xx路xx号xx大厦',
        'locality': '杭州',
        'region': '浙江',
        'country': '中国'
    }],
    'ims': [{
        'id': '1',
        'type': 'qq',
        'value': '88888888',
        'pref': false
    }],
    'organizations': [{
        'id': '1',
        'type': 'work',
        'title': 'xx工程师',
        'department': 'xx部',
        'name': 'xx公司'
        'pref': false,
    }],
    'photos': [{
        'type': 'url',
        'id': '1',
        'value': 'photo8.jpg',
        'pref': false
    }],
    'categories': [{
        'id': '1',
        'type': '',
        'value': 'Business',
        'pref': false
    }],
    'urls': [{
        'id': '1',
        'type': 'work',
        'value': 'www.gafish.net',
        'pref': false
    }]
}

 


    
[3] UITableView选中后色彩立即消失
    来源: 互联网  发布时间: 2014-02-18
UITableView选中后颜色立即消失
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //选中后反显颜色立即消失
    [tv deselectRowAtIndexPath:indexPath animated:YES];
}

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
编程语言 iis7站长之家
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3