2016-06-08 3 views
1

안드로이드 기본 연락처 앱에서 일부 휴대 전화에는 Address이라는 단일 주소 입력란이 있습니다. 일부 휴대 전화에는 street, city, state, country, zip code과 같은 여러 입력란이 있습니다. 방금 ​​앱에서 기본 앱에 주소를 저장하는 방법을 알고 싶습니다. 그리고 기본 앱에서 address을 검색하는 방법도 있습니다.Android : 앱에서 기본 연락처 앱에 주소 저장 방법

답변

0

사본 과거 어쩌면 내가 같은 문제를 가지고 당신

 String DisplayName = "XYZ"; 
    String MobileNumber = "123456"; 
    String HomeNumber = "1111"; 
     String WorkNumber = "2222"; 
     String emailID = "[email protected]"; 
    String company = "bad"; 
    String jobTitle = "abcd"; 


ArrayList <ContentProviderOperation> ops = new ArrayList <  

ContentProviderOperation >(); 

    ops.add(ContentProviderOperation.newInsert(
    ContactsContract.RawContacts.CONTENT_URI) 
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
.build()); 

//------------------------------------------------------ Names 
    if (DisplayName != null) { 
    ops.add(ContentProviderOperation.newInsert(
    ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
    .withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 
DisplayName).build()); 
} 

//------------------------------------------------------ Mobile Number      
if (MobileNumber != null) { 
ops.add(ContentProviderOperation. 
newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, MobileNumber) 
    .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) 
    .build()); 
} 

//------------------------------------------------------ Home Numbers 
if (HomeNumber != null) { ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, HomeNumber) 
    .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
ContactsContract.CommonDataKinds.Phone.TYPE_HOME) 
    .build()); 
} 
//------------------------------------------------------ Work Numbers 
if (WorkNumber != null) {  ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, WorkNumber) 
    .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, 
ContactsContract.CommonDataKinds.Phone.TYPE_WORK) 
    .build()); 
    } 

//------------------------------------------------------ Email 
    if (emailID != null) {ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.Email.DATA, emailID) 
    .withValue(ContactsContract.CommonDataKinds.Email.TYPE, 
ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
    .build()); 
}//------------------------------------------------------ Organization 
if (!company.equals("") && !jobTitle.equals("")) { ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY,  
company) .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, 
    ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
    .withValue(ContactsContract.CommonDataKinds.Organization.TITLE,  
jobTitle) 
    .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, 
    ContactsContract.CommonDataKinds.Organization.TYPE_WORK) 
    .build()); 
} 

// Asking the Contact provider to create a new contact     
    try { 
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
    } catch (Exception e) { 
e.printStackTrace(); 
Toast.makeText(myContext, "Exception: " + e.getMessage(),  
Toast.LENGTH_SHORT).show(); 
} 
+0

나는 여기에 주소 필드를 요청했다. @ shivpal jodha – android

1

도움이 될 것입니다. 오랜 시간이 지난 후에 나는 하나의 해결책을 얻었으므로 코드 아래에서 이것을 사용할 수 있습니다 :

public boolean addContact() { 
    if (Build.VERSION.SDK_INT >= 23) { 
     if (haveContactPermission()) { 
      ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
      int rawContactInsertIndex = ops.size(); 

      ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build()); 

      ops.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, TextViewUserFullName.getText()) // Name of the person 
        .build()); 


      ops.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, homephone) // Number of the person 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME).build()); // Type of mobile number 

      ops.add(ContentProviderOperation 
        .newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(
          ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobilephone) // Number of the person 
        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build()); // Type of mobile number 

      ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, getBitmapFromURL(image)) 
        .build()); 

      ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email) 
        .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_HOME) 
        .build()); 


      ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE) 
        .withValue(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, TextViewWifeName.getText()).build()); 

      try { 
       ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
       return true; 
      } catch (RemoteException e) { 
       Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
       // error 
       return false; 
      } catch (OperationApplicationException e) { 
       Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
       // error 
       return false; 
      } 
     } else { 
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_CONTACTS}, 
        PERMISSION_CONTACT_NUMBER); 
      return false; 
     } 

    } else { 


     ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
     int rawContactInsertIndex = ops.size(); 

     ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build()); 

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, TextViewUserFullName.getText()) // Name of the person 
       .build()); 



     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(
         ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, homephone) // Number of the person 
       .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME).build()); // Type of mobile number 

     ops.add(ContentProviderOperation 
       .newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(
         ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobilephone) // Number of the person 
       .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build()); // Type of mobile number 

     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, getBitmapFromURL(image)) 
       .build()); 

     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email) 
       .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_HOME) 
       .build()); 


     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
       .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE) 
       .withValue(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, TextViewWifeName.getText()).build()); 

     try { 
      ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
      return true; 
     } catch (RemoteException e) { 
      Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
      // error 
      return false; 
     } catch (OperationApplicationException e) { 
      Toast.makeText(ContactInfoZone.this, "" + e.toString(), Toast.LENGTH_SHORT).show(); 
      // error 
      return false; 
     } 
    } 
} 

나는 당신을 도울 것이라고 생각합니다.

+0

if와 else 코드의 차이점은 무엇입니까 ?? – android

+0

ok thks .... 빠른 연락처 읽기에 대한 몇 가지 팁을 제공 할 수 있습니까? 400 분의 연락처 2 분 복용 .... 읽고 모든 데이터를 가진 연락처를 쿼리하는 빠른 방법을 말해주십시오. – android

+0

두 가지 조건이 있습니다. 첫 번째 버전이 23 이상입니까? 버전이 23보다 낮 으면 아무 문제가 없습니다. 직접 연락 할 수 있습니다. else 조건이 23 이상인 경우 (조건이 두 번째 인 경우) 우리는 연락 권한이 부여되었는지 여부를 묻고 싶습니다. 그렇다면 우리는 연락처를 추가 할 수 있습니다. 그러면 요청 권한을 만듭니다. –