You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
5.8 KiB
94 lines
5.8 KiB
<html>
|
|
<head>
|
|
<title>Contact.java</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<style type="text/css">
|
|
.s0 { color: #8c8c8c; font-style: italic;}
|
|
.s1 { color: #080808;}
|
|
.s2 { color: #0033b3;}
|
|
.s3 { color: #067d17;}
|
|
.s4 { color: #1750eb;}
|
|
</style>
|
|
</head>
|
|
<body bgcolor="#ffffff">
|
|
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#c0c0c0" >
|
|
<tr><td><center>
|
|
<font face="Arial, Helvetica" color="#000000">
|
|
Contact.java</font>
|
|
</center></td></tr></table>
|
|
<pre><span class="s0">/*
|
|
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/</span>
|
|
|
|
<span class="s2">package </span><span class="s1">net.micode.notes.data;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">android.content.Context;</span>
|
|
<span class="s2">import </span><span class="s1">android.database.Cursor;</span>
|
|
<span class="s2">import </span><span class="s1">android.provider.ContactsContract.CommonDataKinds.Phone;</span>
|
|
<span class="s2">import </span><span class="s1">android.provider.ContactsContract.Data;</span>
|
|
<span class="s2">import </span><span class="s1">android.telephony.PhoneNumberUtils;</span>
|
|
<span class="s2">import </span><span class="s1">android.util.Log;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">java.util.HashMap;</span>
|
|
|
|
<span class="s2">public class </span><span class="s1">Contact {</span>
|
|
<span class="s2">private static </span><span class="s1">HashMap<String, String> sContactCache;</span>
|
|
<span class="s2">private static final </span><span class="s1">String TAG = </span><span class="s3">"Contact"</span><span class="s1">;</span>
|
|
|
|
<span class="s2">private static final </span><span class="s1">String CALLER_ID_SELECTION = </span><span class="s3">"PHONE_NUMBERS_EQUAL(" </span><span class="s1">+ Phone.NUMBER</span>
|
|
<span class="s1">+ </span><span class="s3">",?) AND " </span><span class="s1">+ Data.MIMETYPE + </span><span class="s3">"='" </span><span class="s1">+ Phone.CONTENT_ITEM_TYPE + </span><span class="s3">"'"</span>
|
|
<span class="s1">+ </span><span class="s3">" AND " </span><span class="s1">+ Data.RAW_CONTACT_ID + </span><span class="s3">" IN "</span>
|
|
<span class="s1">+ </span><span class="s3">"(SELECT raw_contact_id "</span>
|
|
<span class="s1">+ </span><span class="s3">" FROM phone_lookup"</span>
|
|
<span class="s1">+ </span><span class="s3">" WHERE min_match = '+')"</span><span class="s1">;</span>
|
|
|
|
<span class="s2">public static </span><span class="s1">String getContact(Context context, String phoneNumber) {</span>
|
|
<span class="s2">if</span><span class="s1">(sContactCache == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">sContactCache = </span><span class="s2">new </span><span class="s1">HashMap<String, String>();</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">if</span><span class="s1">(sContactCache.containsKey(phoneNumber)) {</span>
|
|
<span class="s2">return </span><span class="s1">sContactCache.get(phoneNumber);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">String selection = CALLER_ID_SELECTION.replace(</span><span class="s3">"+"</span><span class="s1">,</span>
|
|
<span class="s1">PhoneNumberUtils.toCallerIDMinMatch(phoneNumber));</span>
|
|
<span class="s1">Cursor cursor = context.getContentResolver().query(</span>
|
|
<span class="s1">Data.CONTENT_URI,</span>
|
|
<span class="s2">new </span><span class="s1">String [] { Phone.DISPLAY_NAME },</span>
|
|
<span class="s1">selection,</span>
|
|
<span class="s2">new </span><span class="s1">String[] { phoneNumber },</span>
|
|
<span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(cursor != </span><span class="s2">null </span><span class="s1">&& cursor.moveToFirst()) {</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">String name = cursor.getString(</span><span class="s4">0</span><span class="s1">);</span>
|
|
<span class="s1">sContactCache.put(phoneNumber, name);</span>
|
|
<span class="s2">return </span><span class="s1">name;</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IndexOutOfBoundsException e) {</span>
|
|
<span class="s1">Log.e(TAG, </span><span class="s3">" Cursor get string error " </span><span class="s1">+ e.toString());</span>
|
|
<span class="s2">return null</span><span class="s1">;</span>
|
|
<span class="s1">} </span><span class="s2">finally </span><span class="s1">{</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">} </span><span class="s2">else </span><span class="s1">{</span>
|
|
<span class="s1">Log.d(TAG, </span><span class="s3">"No contact matched with number:" </span><span class="s1">+ phoneNumber);</span>
|
|
<span class="s2">return null</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
</pre>
|
|
</body>
|
|
</html> |