2011-08-30 98 views
0

我可以閱讀短信收件箱並顯示所有消息。我有兩個問題。第一個是人字段始終爲NULL。Android 2.2閱讀短信收件箱消息

這是我對「content:// sms/inbox」的查詢。

Cursor cursor = context.getContentResolver().query(SMS_INBOX_CONTENT_URI, 
      new String[] { "_id", "thread_id", "address", "person", "date", "body" }, 
        null, 
        null, 
        SORT_ORDER); 

人字段始終爲NULL。有沒有辦法檢索此短信的實際顯示名稱?是否有連接到另一個表來檢索顯示名稱?

其次,當我在我的手機上進行測試時,我注意到我的短信未包含在查詢中。爲什麼?有沒有可能解決這個問題?

在此先感謝。

回答

0
The person field is always NULL. Is there a way to retrieve the actual display name for 


this SMS message? Is there a join to another table to retrieve display name? 

對於顯示名稱必須使用另一個查詢和光標,或者你可以加入查詢獲取的人的名字,但有時因爲那個人接觸不會被保存在您的聯繫人列表或你沒有得到名稱任何其他組織或公司都會發送郵件,那麼您沒有獲得該名稱,因此當時可以在聯繫人表上查詢以獲取名稱(如果找到),則可以顯示該名稱,否則將地址顯示爲默認地址。

在這你明白我的是發件人地址爲數字格式,所以你需要傳遞的聯絡查詢該號碼檢索人

+0

是剛剛意識到這一點。我將不得不爲聯繫人做另一個查詢。同樣可以查看我發送的SMS消息,可能會查詢已發送的內容存儲而不是收件箱。我是Android新手,因此仍然習慣於這些內容商店。謝謝。 – Marquinio

0

的名稱試試這個代碼地址:

public String findNameByAddress(Context ct,String addr) 
     { 
      Uri myPerson = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, 
         Uri.encode(addr)); 

      String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME }; 

       Cursor cursor = ct.getContentResolver().query(myPerson, 
         projection, null, null, null); 

       if (cursor.moveToFirst()) { 



        String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 


        Log.e("","Found contact name"); 

        cursor.close(); 

        return name; 
       } 

       cursor.close(); 
       Log.e("","Not Found contact name"); 

       return addr; 
     }