-1

ネイティブの連絡先から電子メール ID を選択することで構成されるアプリを構築したいと思います。選択した電子メールの値をアプリ内で取得するにはどうすればよいですか。これをスタンドアロンの例で実現するにはどうすればよいでしょうか。ありがとうございます。

4

1 に答える 1

1
  1. 以下のように連絡先リストを実装します。

       public class contDetail extends Activity implements OnItemClickListener {    
    private static final String[] PROJECTION = new String[] {            
    ContactsContract.Contacts._ID,            
    ContactsContract.Contacts.DISPLAY_NAME,            
    ContactsContract.Contacts.HAS_PHONE_NUMBER,            
    ContactsContract.Contacts.LOOKUP_KEY  
    };
    private int mIdColumnIndex;
    private int mHasPhoneColumnIndex;
    private TextView mPhone;
    @Override    
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
           setContentView(R.layout.pickcontact);
       mPhone = (TextView) findViewById(R.id.test); 
    ListView myList=(ListView)findViewById(R.id.list1); 
    Cursor c = managedQuery(ContactsContract.Contacts.CONTENT_URI,
            PROJECTION, null, null, null);       
            mIdColumnIndex = c.getColumnIndex(ContactsContract.Contacts._ID);      
            mHasPhoneColumnIndex = c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
            ListAdapter adapter = new SimpleCursorAdapter(this, 
                    android.R.layout.simple_list_item_1,c, 
                    new String[] { ContactsContract.Contacts.HAS_PHONE_NUMBER },
                    new int[] { android.R.id.text1 }); 
            myList.setAdapter(adapter); 
            myList.setOnItemClickListener(this);
            //setOnItemSelectedListener(this);      
    
       }
    
       public void onItemClick(AdapterView<?>parent, View v, int position, long id) {
    if (position >= 0) { 
    final Cursor c = (Cursor) parent.getItemAtPosition(position); 
    if (c.getInt(mHasPhoneColumnIndex) > 0) { 
    final long contactId = c.getLong(mIdColumnIndex);   
    final Cursor phones = getContentResolver().query(  
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
    new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER }, 
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, 
    ContactsContract.CommonDataKinds.Phone.IS_SUPER_PRIMARY + " DESC"); 
    try {             
    phones.moveToFirst();   
        mPhone.setText(phones.getString(0));
        String ph = phones.getString(0);
        Intent intent = this.getIntent(); 
        intent.putExtra("SOMETHING",ph ); 
        this.setResult(RESULT_OK, intent); 
        finish(); 
    
    } finally {                 
    phones.close();    
    }          
    } else {  
    mPhone.setText(R.string.button_info_text);  
    }}  
       }
    
       public void onNothingSelected(AdapterView parent) {
    mPhone.setText(R.string.button_info_text);
    }
    
     }
    
  2. 以下のように、選択した連絡先をアクティビティの EditText Box にコピーします。

          @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data)                  {
      super.onActivityResult(requestCode, resultCode, data);
      if(resultCode==RESULT_OK && requestCode==1)       
       ed1.setText(data.getStringExtra("SOMETHING"));
      if(resultCode==RESULT_OK && requestCode==2)       
         ed2.setText(data.getStringExtra("SOMETHING"));   
       }
    
于 2012-06-01T08:53:10.363 に答える