当前位置: 编程技术>移动开发
本页文章导读:
▪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);
}
最新技术文章: