2011-03-04 131 views
1

我要添加新的联系人,当我调试我没有发现任何错误,但我仍无法添加新的联系人。请仔细阅读我的代码并指导我。添加新联系人

我的代码:

public final class contactadder extends Activity 
{ 
private EditText ETCname; 
private EditText ETCPhNo; 
private EditText ETCEmailId; 
private Button btnSave; 
String ss; 
public static final String TAG = "ContactsAdder"; 


@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.contact_adder); 
    ETCname=(EditText)findViewById(R.id.contactNameEditText); 
    ETCPhNo=(EditText)findViewById(R.id.contactPhoneEditText); 
    ETCEmailId=(EditText)findViewById(R.id.contactEmailEditText); 
    btnSave=(Button)findViewById(R.id.contactSaveButton); 
    btnSave.setOnClickListener(new View.OnClickListener() 
{ 
    public void onClick(View v) 
    { 
      String name=ETCname.getText().toString(); 
     String phone=ETCPhNo.getText().toString(); 
     String email=ETCEmailId.getText().toString(); 
    ArrayList<ContentProviderOperation> op=new ArrayList<ContentProviderOperation>(); 
        /* ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType()) 
        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName()) 
      .build()); */ 
    op.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, name) 
      .build()); 
    op.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,phone).build()); 
     Log.i(TAG,"Creating contact: " + name);   
     try 
     { 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, op); 
      launchContactManager(); 
     }catch (Exception e) 
     { 
      Context ctx = getApplicationContext(); 
      CharSequence txt = "Contact creation failed, check logs.";  
      int duration = Toast.LENGTH_SHORT; 
      Toast toast = Toast.makeText(ctx, txt, duration); 
      toast.show(); 
      //log exception 
      Log.e(TAG, "Exceptoin encoutered while inserting contact: " + e);   
     } 
        } 
} 

回答

0

你的代码粗略地看一眼显示了onClick功能五号线的错误:

ArrayList<ContentProviderOperation> op=new ArrayList<ContentProviderOperation>(); 
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 

您声明ArrayList“OP”,然后你的下一行引用 “OPS”

固定的是,确实 logcat列表中的任何错误后? 刚刚注意到你的评论说没有错误。

是您的正确manifest.xml中宣布的权限?您需要声明<uses-permission android:name="android.permission.WRITE_CONTACTS" />

+0

抱歉,其实我有评论说,一个我不知道该怎么在这个地方写“mSelectedAccount.getType())” ... – Neha 2011-03-04 09:47:18

+0

@Neha更新... – Farray 2011-03-04 16:20:21

+0

亚我已经知道该permission.Now我的代码正在工作,我给ContentProviderResult []结果= getContentResolver()applyBatch(ContactsContract.AUTHORITY,OP); – Neha 2011-03-07 05:28:00