Java 在Android中,如何获取联系人并保存到数据库实现?

Java 在Android中,如何获取联系人并保存到数据库实现?,java,android,Java,Android,在我的android程序中,我有NumberList.java和list\u layout.xml 在xml中有一个编辑文本字段和一个按钮..在编辑文本中,我们可以输入电话号码,并使用按钮保存 但我的要求是,我想从联系人中提取号码并通过按钮保存。MainActivity.java是提取所选联系人号码的程序。。但我不能像NumberList.java那样保存。 我如何实现??? NumberList.java public class NumberList extends Activity imp

在我的android程序中,我有NumberList.javalist\u layout.xml 在xml中有一个编辑文本字段和一个按钮..在编辑文本中,我们可以输入电话号码,并使用按钮保存

但我的要求是,我想从联系人中提取号码并通过按钮保存。MainActivity.java是提取所选联系人号码的程序。。但我不能像NumberList.java那样保存。 我如何实现??? NumberList.java

public class NumberList extends Activity implements OnClickListener{
 private RemindersDbAdapter mDbAdapter;
private EditText numbr;
private Button btnAdd;
private Button btnTree;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_layout);
    mDbAdapter=new RemindersDbAdapter(this);
    mDbAdapter.open();
   numbr=(EditText) findViewById(R.id.editNumber);
   btnAdd=(Button) findViewById(R.id.btnSave);
   btnAdd.setOnClickListener(this);      
}
    public void onClick(View v) {
     switch (v.getId()) {
    case R.id.btnSave:
        if((numbr.getText().toString()!=null)&&(numbr.getText().toString().length()>=7))
        {   mDbAdapter.createReminder(numbr.getText().toString(), "", "");   
          mDbAdapter.close();
          finish();
        }
        else
        {
            Toast.makeText(getApplicationContext(), "plz enter correct number", Toast.LENGTH_SHORT).show();
        }
        default:
        break;
    }
}
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    mDbAdapter.close();
}}
public class MainActivity extends Activity {


 Button buttonReadContact;
 TextView textPhone;
 EditText ed;
  final int RQS_PICKCONTACT = 1;
@Override


protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  buttonReadContact = (Button)findViewById(R.id.readcontact);
  textPhone = (TextView)findViewById(R.id.phone);
  ed = (EditText)findViewById(R.id.phno1);
  buttonReadContact.setOnClickListener(new OnClickListener(){

@Override
   public void onClick(View arg0) {
    //Start activity to get contact
    final Uri uriContact = ContactsContract.Contacts.CONTENT_URI;
    Intent intentPickContact = new Intent(Intent.ACTION_PICK, uriContact);
    startActivityForResult(intentPickContact, RQS_PICKCONTACT);
   }});
 }

 @Override

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  if(resultCode == RESULT_OK){
   if(requestCode == RQS_PICKCONTACT){
    Uri returnUri = data.getData();
    Cursor cursor = getContentResolver().query(returnUri, null, null, null, null);
   if(cursor.moveToNext()){
     int columnIndex_ID = cursor.getColumnIndex(ContactsContract.Contacts._ID);
     String contactID = cursor.getString(columnIndex_ID);
          int columnIndex_HASPHONENUMBER = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
     String stringHasPhoneNumber = cursor.getString(columnIndex_HASPHONENUMBER);
         if(stringHasPhoneNumber.equalsIgnoreCase("1")){
      Cursor cursorNum = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        null, 
        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactID, 
        null, 
        null);

      //Get the first phone number
      if(cursorNum.moveToNext()){
       int columnIndex_number = cursorNum.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
       String stringNumber = cursorNum.getString(columnIndex_number);
     ed.setText(stringNumber);
      }
       }else{
      textPhone.setText("NO Phone Number");
     }

    }else{
     Toast.makeText(getApplicationContext(), "NO data!", Toast.LENGTH_LONG).show();
    }
   }
  }
 }
}
另一个从联系人列表中获取联系人号码 MainActivity.java

public class NumberList extends Activity implements OnClickListener{
 private RemindersDbAdapter mDbAdapter;
private EditText numbr;
private Button btnAdd;
private Button btnTree;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_layout);
    mDbAdapter=new RemindersDbAdapter(this);
    mDbAdapter.open();
   numbr=(EditText) findViewById(R.id.editNumber);
   btnAdd=(Button) findViewById(R.id.btnSave);
   btnAdd.setOnClickListener(this);      
}
    public void onClick(View v) {
     switch (v.getId()) {
    case R.id.btnSave:
        if((numbr.getText().toString()!=null)&&(numbr.getText().toString().length()>=7))
        {   mDbAdapter.createReminder(numbr.getText().toString(), "", "");   
          mDbAdapter.close();
          finish();
        }
        else
        {
            Toast.makeText(getApplicationContext(), "plz enter correct number", Toast.LENGTH_SHORT).show();
        }
        default:
        break;
    }
}
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    mDbAdapter.close();
}}
public class MainActivity extends Activity {


 Button buttonReadContact;
 TextView textPhone;
 EditText ed;
  final int RQS_PICKCONTACT = 1;
@Override


protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  buttonReadContact = (Button)findViewById(R.id.readcontact);
  textPhone = (TextView)findViewById(R.id.phone);
  ed = (EditText)findViewById(R.id.phno1);
  buttonReadContact.setOnClickListener(new OnClickListener(){

@Override
   public void onClick(View arg0) {
    //Start activity to get contact
    final Uri uriContact = ContactsContract.Contacts.CONTENT_URI;
    Intent intentPickContact = new Intent(Intent.ACTION_PICK, uriContact);
    startActivityForResult(intentPickContact, RQS_PICKCONTACT);
   }});
 }

 @Override

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  if(resultCode == RESULT_OK){
   if(requestCode == RQS_PICKCONTACT){
    Uri returnUri = data.getData();
    Cursor cursor = getContentResolver().query(returnUri, null, null, null, null);
   if(cursor.moveToNext()){
     int columnIndex_ID = cursor.getColumnIndex(ContactsContract.Contacts._ID);
     String contactID = cursor.getString(columnIndex_ID);
          int columnIndex_HASPHONENUMBER = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
     String stringHasPhoneNumber = cursor.getString(columnIndex_HASPHONENUMBER);
         if(stringHasPhoneNumber.equalsIgnoreCase("1")){
      Cursor cursorNum = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        null, 
        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactID, 
        null, 
        null);

      //Get the first phone number
      if(cursorNum.moveToNext()){
       int columnIndex_number = cursorNum.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
       String stringNumber = cursorNum.getString(columnIndex_number);
     ed.setText(stringNumber);
      }
       }else{
      textPhone.setText("NO Phone Number");
     }

    }else{
     Toast.makeText(getApplicationContext(), "NO data!", Toast.LENGTH_LONG).show();
    }
   }
  }
 }
}

这就是您所需要的,只需创建一个表,使用名称和电话号码,并在下面的代码中填写数据库详细信息

      btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                    readContacts(getApplicationContext());

            }
        });


      public void readContacts(Context ctx, String no) {

        ContentValues cvs   cvs = new ContentValues();
        Cursor phones = ctx.getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
                null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");
        if (phones.getCount() > 0) {
            while (phones.moveToNext()) {

                String phoneNumber = phones
                        .getString(phones
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                if (!TextUtils.isEmpty(phoneNumber)) {
            String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

                cvs.put("name", name );
                cvs.put("phone_no", phoneNumber );


                }

            }

        }
                 insertItem(cvs, "readtables");


    }

private void insertItem(ContentValues cbs, String Tablename) {
        SQLiteDatabase db = dbl.getWritableDatabase();

        try {

            CreateTablenew(Tablename);


            db.insert("Tablename", null, cbs);


        } catch (SQLException e) {


        }
    }