2011.03.10 18:10


다음 클래스는 전화번호를 가지고 DB에 저장되어 있는 Contact의 id 값과 이름. 그리고 그에 해당되는 사진 photo값을 가져오는 
클래스 이다.
* 2.2 기준입니다. *

...

public class ContactInfo
{
String name;
String id;
final String[] CONTACTS_PROJECTION = new String[]{
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME 
}; 
                
                //본 생성자에서는 인자값으로 넘어온 전화번호(number)에 해당되는 contact id 와 catact name을 
               가져와서 멤버 변수 name과 id에 저장해 준다.

public ContactInfo(ContentResolver resolver, String number)
{
Cursor cursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI , 
CONTACTS_PROJECTION, 
ContactsContract.CommonDataKinds.Phone.NUMBER+"=?", 
new String[]{number}, null);
if(cursor.getCount() < 1)
{
name = null;
id = null;
}
else
{
cursor.moveToFirst();
id = cursor.getString(0);
name = cursor.getString(1);
}
cursor.close();
}

               //위 생성자에서 구해진 id 값을 기준으로 해서 id와 name에 일치하는 Contact의 사진을 가져와서
               Bitmap 형식으로 반환해 준다.

public Bitmap getPhoto()
{
if(id == null) return null;
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,Long.parseLong((id)));
InputStream data = ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(), uri);
if(data != null)
return BitmapFactory.decodeStream(data);
else
return null;
}
}
신고
Posted by 구름같은사나이
2011.03.09 14:12

최근 통화 기록 중, 부재중 통화 내역 가져오기.

예) 이 예제는 0102222222 번호에 대한 최근 부재중 통화 내역을 가져온다. 
     이 코드를 이용하여 여러가지 응용이 가능하겠다.

Cursor cursor = getContentResolver().query(
Calls.CONTENT_URI, new String[] {Calls.TYPE}, 
Calls.NUMBER +  " = ? AND " + Calls.NEW + " = ?", 
new String[] { "0102222222", "1" }, 
Calls.DATE + " DESC ");
...

if(cursor.getCount() > 0)
{
cursor.moveToFirst(); 
int type = cursor.getInt(0);
                if(type == Calls.MISSED_TYPE)  //부재중 통화
                {
                     //필요 사항 구현... 
...

- 필요 Permission-

<uses-permission android:name="android.permission.READ_CONTACTS" />
신고
Posted by 구름같은사나이

티스토리 툴바