2013-05-08 118 views
-1

我一直在到處找,因爲過去的幾天裏找到一種方法,使用我已經保存在一個變量的電話號碼檢索聯繫人姓名,可惜一切我迄今發現檢索聯繫人的名字似乎是使用不推薦的函數/調用。從電話號碼

當然,我試圖做我自己的方式,但我覺得我的Android/JAVA知識是不夠好理解這一概念的是,不斷收到一些錯誤或強制關閉時,我嘗試運行任何東西。

到目前爲止,我能找到的最好的事情是這樣的:

public String getContactName(final String phoneNumber) 
    { 
     Uri uri; 
     String[] projection; 

     if (Build.VERSION.SDK_INT >= 5) 
     { 
      uri = Uri.parse("content://com.android.contacts/phone_lookup"); 
      projection = new String[] { "display_name" }; 
     } 
     else 
     { 
      uri = Uri.parse("content://contacts/phones/filter"); 
      projection = new String[] { "name" }; 
     } 

     uri = Uri.withAppendedPath(uri, Uri.encode(phoneNumber)); 
     Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null); 

     String contactName = ""; 

     if (cursor.moveToFirst()) 
     { 
      contactName = cursor.getString(0); 
     } 

     cursor.close(); 
     cursor = null; 

     return contactName; 
    } 

但是,通過使用此代碼,Eclipse的告訴我:上下文無法得到解決。 很多代碼和解釋,我發現用這種語境的事情,但我還是不連看完這個理解:What is 'Context' on Android?

任何幫助,將不勝感激, 非常感謝您

回答

0

如果你想利用這個活動裏面,然後背景是通過使用this得到什麼。所以基本上,在這裏,不要致電context.getContentResolver(),請致電this.getContentResolver()或只需getContentResolver()

Eclipse的抱怨主要是因爲你想調用的東西的方法稱爲context其Eclipse不知道,因爲它沒有被任何地方聲明。如果你之前做過類似Context context = this;這樣的工作,那將會起作用,但那真的沒用。

getContentResolver()是由Activity聲明和定義的方法,它是您的活動擴展的類,因此您可以像這樣調用它。

我希望它能幫助。至於什麼背景確實是,我很抱歉,但我無法幫助你,因爲我甚至不確定我是否理解正確。

而且,請注意,我沒有檢查你發佈的代碼,我不知道,如果它從一個電話號碼獲取聯繫人的姓名。只是想幫助你擺脫上下文無法解決的錯誤。

+0

哇,這是真正有用的,所有這些時間花在試圖理解,你讓我在30秒內理解。非常感謝Zabri! – GaijinJim 2013-05-08 19:03:44

+0

我是嗎?好,好。 :)請問您接受答案嗎?謝謝。 – zbr 2013-05-08 19:05:16