当前位置: 编程技术>移动开发
本页文章导读:
▪ContactsContract获取联系人信息及双向查寻联系人信息 ContactsContract获取联系人信息及双向查找联系人信息
添加权限:
<uses-permission
android:name="android.permission.READ_CONTACTS"></uses-permission>
try {
/* 必须要有android.permission.READ_CONTACTS权限.........
▪ 对View组件touch事件响应的了解 对View组件touch事件响应的理解
Android响应View组件的touch事件通常是采用重写onTouch(MotionEvent event)方法,或者是setOnTouchListener()设置listener.View组件的touch事件的响应是通过调用dispatchTouchEvent(Mot.........
▪ 抚摸任意位置关闭Activity 触摸任意位置关闭Activity
/** 点击屏幕任意位置关闭Activity*/
public boolean onTouchEvent(MotionEvent event)
{
finish();
return super.onTouchEvent(event);
}
......
[1]ContactsContract获取联系人信息及双向查寻联系人信息
来源: 互联网 发布时间: 2014-02-18
ContactsContract获取联系人信息及双向查找联系人信息
添加权限:
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
try { /* 必须要有android.permission.READ_CONTACTS权限 */ Cursor cursor = managedQuery( android.provider.ContactsContract.Contacts.CONTENT_URI, null, null, null, null); /* 将Cursor移到资料最前端 */ for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor .moveToNext()) { /* 取得联络人的姓名 */ String strName = cursor .getString(cursor .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); /* 取得联络人的电话 */ int contactId = cursor.getInt(cursor .getColumnIndex(ContactsContract.Contacts._ID)); Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); int typePhone, resType; String numPhone; if (phones.getCount() > 0) { phones.moveToFirst(); /* 2.0可以允许User设定多组电话号码,但本范例只捞一组电话号码作示范 */ typePhone = phones .getInt(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); numPhone = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); resType = ContactsContract.CommonDataKinds.Phone .getTypeLabelResource(typePhone); addItem(strName, getString(resType) + ":" + numPhone);//添加到ListView中,此代码略去 } } } catch (Exception e) { e.printStackTrace(); }
根据号码查找联系人
public String getContactPeople(String incomingNumber) { String contactPeople = ""; ContentResolver contentResolver = getContentResolver(); Cursor cursor = null; /* cursor里要放的字段名称 */ String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER }; /* 用来电电话号码查找该联系人 */ cursor = contentResolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.NUMBER + "=?", new String[] { incomingNumber }, ""); /* 找不到联系人 */ if (cursor.getCount() == 0) { contactPeople = "未知联系人"; } else if (cursor.getCount() > 0) { cursor.moveToFirst(); /* projection这个数组里 */ contactPeople = cursor.getString(1); } return contactPeople; }
根据联系人查找号码
/* 以联系人名称搜索通信录中联系人的电话的method */ private String getContactPeople(String name) { String result = ""; ContentResolver contentResolver = EX06_23.this.getContentResolver(); Cursor cursor = null; /* 要搜索的字段名称 */ String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER }; /* 以联系人的名字去找该联系人的电话 */ cursor = contentResolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.Contacts.DISPLAY_NAME + "=?", new String[] { name }, ""); if (cursor.getCount() != 0) { cursor.moveToFirst(); /* 取得联系人电话 */ result = cursor.getString(0); } return result; }
[2] 对View组件touch事件响应的了解
来源: 互联网 发布时间: 2014-02-18
对View组件touch事件响应的理解
Android响应View组件的touch事件通常是采用重写onTouch(MotionEvent event)方法,或者是setOnTouchListener()设置listener.View组件的touch事件的响应是通过调用dispatchTouchEvent(MotionEvent event)方法分发的,当touch listener为null或者它返回的结果是false时,就调用onTouch()方法,所以touch listener的优先级要比onTouch()方法的高。当onTouch()方法返回false时,才会触发view组件parent的touch事件响应。
ViewGroup的dispatchTouchEvent()方法有所不同,它会对touch事件进行解析,通过调用onInterceptTouchEvent(MotionEvent event), 若返回false时会将事件分发给响应的子组件,否则自己响应这个touch事件,默认的为false, 可以对这个方法进行重写来拦截touch事件。因此,view组件响应事件的机制是,touch事件从view组件树顶层一直分发下去到最底层的组件上,当组件没有consume这个事件时会传回到上一级进行处理,直到返回到最底层扔出,这会最终被Activity进行处理,因为事件最开始分发的地方是从Activity开始的,它会调用getWindow().superDispatchTouchEvent(ev)方法把事件分发给组件树,若果view组件树没有处理则最终会调用自己的onTouch(MotionEvent event)方法。[/size][/size]
Android响应View组件的touch事件通常是采用重写onTouch(MotionEvent event)方法,或者是setOnTouchListener()设置listener.View组件的touch事件的响应是通过调用dispatchTouchEvent(MotionEvent event)方法分发的,当touch listener为null或者它返回的结果是false时,就调用onTouch()方法,所以touch listener的优先级要比onTouch()方法的高。当onTouch()方法返回false时,才会触发view组件parent的touch事件响应。
ViewGroup的dispatchTouchEvent()方法有所不同,它会对touch事件进行解析,通过调用onInterceptTouchEvent(MotionEvent event), 若返回false时会将事件分发给响应的子组件,否则自己响应这个touch事件,默认的为false, 可以对这个方法进行重写来拦截touch事件。因此,view组件响应事件的机制是,touch事件从view组件树顶层一直分发下去到最底层的组件上,当组件没有consume这个事件时会传回到上一级进行处理,直到返回到最底层扔出,这会最终被Activity进行处理,因为事件最开始分发的地方是从Activity开始的,它会调用getWindow().superDispatchTouchEvent(ev)方法把事件分发给组件树,若果view组件树没有处理则最终会调用自己的onTouch(MotionEvent event)方法。[/size][/size]
[3] 抚摸任意位置关闭Activity
来源: 互联网 发布时间: 2014-02-18
触摸任意位置关闭Activity
/** 点击屏幕任意位置关闭Activity*/ public boolean onTouchEvent(MotionEvent event) { finish(); return super.onTouchEvent(event); }
最新技术文章: