0

私は 2.1 プラットフォームを使用しています。以下のコードを使用して 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();
}
} 

この問題を解決するには?

4

1 に答える 1

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"));

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

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

以下で

   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);
于 2012-07-12T12:16:22.510 に答える