2015-09-30 48 views
1

如何在sim卡android中保存我的电话号码联系方式?我想直接在SIM卡中添加联系人详细信息,而不是在phone.I使用下面的代码来保存手机中的联系人。但面临保存在sim.how中的问题我可以实现这个吗?如何在sim卡android中保存我的电话号码联系方式?

我正在使用以下代码。

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     // Creating a button click listener for the "Add Contact" button 
     OnClickListener addClickListener = new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // Getting reference to Name EditText 
       EditText etName = (EditText) findViewById(R.id.et_name); 

       // Getting reference to Mobile EditText 
       EditText etMobile = (EditText) findViewById(R.id.et_mobile_phone); 

       // Getting reference to HomePhone EditText 
       EditText etHomePhone = (EditText) findViewById(R.id.et_home_phone); 

       // Getting reference to HomeEmail EditText 
       EditText etHomeEmail = (EditText) findViewById(R.id.et_home_email); 

       // Getting reference to WorkEmail EditText 
       EditText etWorkEmail = (EditText) findViewById(R.id.et_work_email);  


       ArrayList<ContentProviderOperation> ops = 
          new ArrayList<ContentProviderOperation>(); 

       int rawContactID = ops.size(); 


      // Adding insert operation to operations list 
       // to insert a new raw contact in the table ContactsContract.RawContacts 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
         .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
         .withValue(RawContacts.ACCOUNT_NAME, null) 
         .build()); 

       // Adding insert operation to operations list 
       // to insert display name in the table ContactsContract.Data 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
         .withValue(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
         .withValue(StructuredName.DISPLAY_NAME, etName.getText().toString()) 
         .build()); 

       // Adding insert operation to operations list 
       // to insert Mobile Number in the table ContactsContract.Data 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
         .withValue(ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
         .withValue(Phone.NUMBER, etMobile.getText().toString()) 
         .withValue(Phone.TYPE, CommonDataKinds.Phone.TYPE_MOBILE) 
         .build()); 

       // Adding insert operation to operations list 
       // to insert Home Phone Number in the table ContactsContract.Data 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
         .withValue(ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
         .withValue(Phone.NUMBER, etHomePhone.getText().toString()) 
         .withValue(Phone.TYPE, Phone.TYPE_HOME) 
         .build()); 

       // Adding insert operation to operations list 
       // to insert Home Email in the table ContactsContract.Data 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
         .withValue(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE) 
         .withValue(Email.ADDRESS, etHomeEmail.getText().toString()) 
         .withValue(Email.TYPE, Email.TYPE_HOME) 
         .build()); 

       // Adding insert operation to operations list 
       // to insert Work Email in the table ContactsContract.Data 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
         .withValue(ContactsContract.Data.MIMETYPE, Email.CONTENT_ITEM_TYPE) 
         .withValue(Email.ADDRESS, etWorkEmail.getText().toString()) 
         .withValue(Email.TYPE, Email.TYPE_WORK) 
         .build());   

       try{ 
        // Executing all the insert operations as a single database transaction 

        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
        Toast.makeText(getBaseContext(), "Contact is successfully added", Toast.LENGTH_SHORT).show(); 
       }catch (RemoteException e) {      
        e.printStackTrace(); 
       }catch (OperationApplicationException e) { 
        e.printStackTrace(); 
       }    } 
     }; 


     // Creating a button click listener for the "Add Contact" button 
     OnClickListener contactsClickListener = new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // Creating an intent to open Android's Contacts List 
       Intent contacts = new Intent(Intent.ACTION_VIEW,ContactsContract.Contacts.CONTENT_URI); 

       // Starting the activity 
       startActivity(contacts);     
      } 
     }; 


     // Getting reference to "Add Contact" button 
     Button btnAdd = (Button) findViewById(R.id.btn_add); 

     // Getting reference to "Contacts List" button 
     Button btnContacts = (Button) findViewById(R.id.btn_contacts); 

     // Setting click listener for the "Add Contact" button 
     btnAdd.setOnClickListener(addClickListener); 

     // Setting click listener for the "List Contacts" button 
     btnContacts.setOnClickListener(contactsClickListener); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 
+0

什么实际问题?例如,不正确的信息被保存,没有被保存,产生了错误信息... – JenB

+0

我能够保存在phone.but不知道如何保存在simcard? –

回答

0

尝试添加该权限的体现:

<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.WRITE_CONTACTS"/> 

而且试试这个代码:

private void addContactToSim(String number, String name) 
{ 
Uri simUri = Uri.parse("content://icc/adn"); 
ContentValues values = new ContentValues(); 
values.put("number", number); 
values.put("tag", name); 
getContentResolver().insert(simUri, values); 
} 

当你在手机保存你可以节省很多领域,例如名字,姓氏,电子邮件,地址,添加多个号码。并且当您在Sim卡中保存时,您只有两个字段名称号码

+0

对不起,没有working.contact没有添加到我的SIM卡。 –

0

使用本:

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
         .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.android.contacts.sim") 
         .withValue(RawContacts.ACCOUNT_NAME, "SIM") 
         .build()); 
相关问题