0
私のアンドロイドアプリケーションでは、アンドロイドの連絡先から連絡先を選択する能力を持つテスト編集の断片が必要です。エスプレッソテストの前に連絡先を作成
質問:アンドロイドエスプレッソテストの前に連絡先を作成し、マニフェストでWRITE_CONTACTS権限を持たない方法はありますか?それとも、コンテンツリゾルバを何とか模擬してもいいですか?
@OnClick(R.id.et_contact)
void chooseContactClick(View v) {
launchContactPicker(v);
}
public void launchContactPicker(View view) {
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
}
private ContactInf fetchPersonFromIntent(Intent data) {
ContactInf contactInf = null;
Uri uri = data.getData();
ContentResolver cr = getActivity().getContentResolver();
Cursor contentCursor = cr.query(uri, null, null,null, null);
if(contentCursor.moveToFirst()) {
String id = contentCursor.getString(contentCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
// Perform a query to retrieve the contact's name parts
String[] nameProjection = new String[] {
ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,
ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME
};
Cursor nameCursor = cr.query(
ContactsContract.Data.CONTENT_URI,
nameProjection,
ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID
+ "=?", new String[]{id}, null);
// Retrieve the name parts
String firstName = StringUtils.EMPTY, middleName = StringUtils.EMPTY, lastName = StringUtils.EMPTY;
if(nameCursor.moveToNext()) {
firstName = nameCursor.getString(nameCursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
middleName = nameCursor.getString(nameCursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME));
lastName = nameCursor.getString(nameCursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
String msg = String.format(" contact %s %s %s %s ", id, firstName, middleName, lastName);
Toast.makeText(getActivity(), msg, Toast.LENGTH_LONG).show();
try {
long idLong = Long.valueOf(id);
contactInf = new ContactInf(idLong, firstName, middleName, lastName);
} catch (NumberFormatException e) {
Log.e(TAG, String.format(" NumberFormatException during parse id [%s] ", id));
}
}
}
return contactInf;
}
ありがとう:ここ
は、私は連絡先を取得する方法のコードです!