2012-07-12 75 views
0

我正在使用2.1平臺我可以通過使用下面的代碼來檢索SMS詳細信息。但是號碼和SMS正文僅顯示,名稱尚未出現,我還可以如何取回名稱?未顯示名稱檢索SMS詳細信息?

代碼

public class SMSActivity extends Activity { 

    ListView lview; 
    String Body = "" ; 
    ArrayList<String> smslist=new ArrayList<String>(); 
    ArrayAdapter<String> itemAdapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    lview =(ListView)findViewById(R.id.lv); 
    itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,smslist); 
    lview.setAdapter(itemAdapter); 

    ContentResolver cr = getContentResolver(); 
    Cursor c = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null); 
    while(c.moveToNext()){ 

    Number = c.getString(c.getColumnIndexOrThrow("address")); 

    Body = c.getString(c.getColumnIndexOrThrow("body")).toString(); 

    smslist.add(Number + ":" +"\n"+ Body); 
    } 
    itemAdapter.notifyDataSetChanged(); 

    c.close(); 
} 
} 

如何解決這個問題呢?

回答

0

您有號碼沒錯!現在將這個數字傳遞給這個方法,它會返回你的聯繫人姓名相應的數字。

public String getContactName(String number) { 
     String cName = null; 
     Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); 
     String nameColumn[] = new String[]{PhoneLookup.DISPLAY_NAME}; 
     Cursor c = getContentResolver().query(uri, nameColumn, null, null, null); 
     if(c == null || c.getCount() == 0) 
      return cName; 
     c.moveToFirst(); 
     cName = c.getString(0); 
     return cName; 

    } 

在您的清單文件中添加以下權限

<uses-permission android:name="android.permission.READ_CONTACTS" />

到Read_contact數據。

爲您的代碼下面

Number = c.getString(c.getColumnIndexOrThrow("address")); 
    String name = getContactName(Number); // declare name outside 

    Body = c.getString(c.getColumnIndexOrThrow("body")).toString(); 
    if(name == null) 
    smslist.add(Number + ":" +"\n"+ Body); 
    else 
     smslist.add(name + ":" +"\n"+ Body); 
+0

我檢查的代碼替換此代碼

Number = c.getString(c.getColumnIndexOrThrow("address")); Body = c.getString(c.getColumnIndexOrThrow("body")).toString(); smslist.add(Number + ":" +"\n"+ Body); 

.......會通知你,並接受OK ..be在線 – Hari 2012-07-12 12:21:05

+0

我已經更新了我的回答。再次檢查一次 – AAnkit 2012-07-12 12:25:56

+0

Ankit你是代碼大師......我得到了我期待的答案......將接受。謝謝你... – Hari 2012-07-12 12:35:23