Я новичок в android. Поэтому я прошу вас проявить терпение. Я пытаюсь написать приложение, в котором при нажатии кнопки открывается API контактов. Затем пользователь выбирает контакт. Затем я хочу получить выбранный контакт в «onAcitvityResult (int reqcode, int rescode, Intent data)». Есть ли способ сделать это, не получив Uri и запросив его через всю базу данных? Это мой код, где начинается вторая активность:android адрес электронной почты получение и хранение и отображение
public void onClick(View v) {
Log.d(TAG, "contact button clicked");
Toast.makeText(ctx, "Contact button clicked",
Toast.LENGTH_SHORT).show();
Intent contacts = new Intent(Intent.ACTION_GET_CONTENT,Contacts.CONTENT_URI);
contacts.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
startActivityForResult(contacts,1);
}
Я правильно использовать «Contacts.CONTENT_URI» и «Intent.ACTION_GET_CONTENT»?
Является ли намерение правильным? У меня возникает ощущение, что здесь я должен указать особенности электронной почты.
И здесь я имею дело с результатом от деятельности: защищаемого ничтожной onActivityResult (INT requestCode, INT ResultCode, Намерение данные) { super.onActivityResult (requestCode, ResultCode, данные); String email = ""; long id; если (requestCode == 1) { если (ResultCode == Activity.RESULT_OK) {
// get the contact ID
Uri contacturi= data.getData();
Cursor c= getContentResolver().query(contacturi,null,null,null,null);
id = c.getLong(c.getColumnIndex(ContactsContract.Contacts._ID));
c.close();
// get the data package containing the email address for the contact
c=getContentResolver().query(ContactsContract.Data.CONTENT_URI,
new String[]{Email.DATA1},
ContactsContract.Data.CONTACT_ID + "=? AND " + Email.MIMETYPE + "=?",
new String[]{String.valueOf(id), Email.CONTENT_ITEM_TYPE}, null);
email=c.getString(c.getColumnIndex(Email.DATA1));
Log.d(TAG, "email is" + email);
}
}
else {
Log.d(TAG, "requestCode is not 1");
}
EditText ctext= (EditText) findViewById(R.id.contacttxt);
ctext.append(email);
Log.d(TAG, "onActivityResult() ends");
}
Я получаю исключение во время выполнения том, что "результат отказа доставки". Должен ли я включать некоторый метод setResult()? Спасибо заранее.
Примеры кода были бы замечательными. – Brahadeesh
Должен ли я использовать широковещательный приемник? это будет иметь какое-то значение? любое понимание будет оценено по достоинству. – Brahadeesh
Я попытался отладить и выявил проблему. Он находится в этой строке: id = c.getDouble (c.getColumnIndexOrThrow (ContactsContract.Contacts._ID)); – Brahadeesh