2017-03-05 20 views
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; 
} 

ありがとう:ここ

は、私は連絡先を取得する方法のコードです!

答えて

0

私はとのsrc \デバッグ\フォルダにもう一つのマニフェストファイルを追加することで、私の問題を解決しました:使用許可アンドロイド:名=「android.permission.WRITE_CONTACTS」

をここでは私がのためにWRITE_CONTACTS権限を持っていますデバッグし、期待通りにリリースする必要はありません。

関連する問題