要在Android应用中实现通信录功能,你可以使用以下步骤:
- 创建联系人实体类:创建一个类来表示联系人,包含姓名、电话号码、电子邮件等信息。
public class Contact {
private String name;
private String phoneNumber;
private String email;
public Contact(String name, String phoneNumber, String email) {
this.name = name;
this.phoneNumber = phoneNumber;
this.email = email;
}
// Getters and setters
}
- 添加联系人:在你的应用中,提供一个界面用于用户输入联系人信息,并将其保存在数据库或其他持久化存储中。
- 显示联系人列表:在应用的主界面中,创建一个列表来显示所有联系人的姓名,用户可以点击列表项查看联系人的详细信息。
- 呼叫联系人:当用户点击某个联系人时,可以通过调用Android系统的电话管理服务来拨打电话。
Uri number = Uri.parse("tel:" + contact.getPhoneNumber());
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
startActivity(callIntent);
- 发送短信:当用户点击某个联系人时,可以通过调用Android系统的短信管理服务来发送短信。
Uri smsUri = Uri.parse("smsto:" + contact.getPhoneNumber());
Intent smsIntent = new Intent(Intent.ACTION_SENDTO, smsUri);
smsIntent.putExtra("sms_body", "Hello, how are you?");
startActivity(smsIntent);
通过以上步骤,你可以在你的Android应用中实现通信录功能。请注意,以上只是基本的实现方式,你可以根据你的需求进行修改和扩展。
在 Android 上实现通讯录功能需要涉及到以下几个步骤:
-
添加权限:在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" />
-
创建联系人类:可以使用以下代码创建一个 Contact 类来表示一个联系人的信息。
public class Contact { private String name; private String phoneNumber; // 构造方法、getter 和 setter 略 @Override public String toString() { return name + " (" + phoneNumber + ")"; } }
-
读取联系人:使用以下代码从系统通讯录中读取联系人信息。
public List<Contact> getContacts() { List<Contact> contactsList = new ArrayList<>(); ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null ); if (cursor != null && cursor.getCount() > 0) { while (cursor.moveToNext()) { String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { Cursor phoneCursor = contentResolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null ); while (phoneCursor.moveToNext()) { String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); Contact contact = new Contact(name, phoneNumber); contactsList.add(contact); } phoneCursor.close(); } } } if (cursor != null) { cursor.close(); } return contactsList; }
-
添加联系人:使用以下代码向系统通讯录中添加联系人。
public void addContact(Contact contact) { ArrayList<ContentProviderOperation> operations = new ArrayList<>(); operations.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) .build()); operations.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, contact.getName()) .build()); operations.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, contact.getPhoneNumber()) .build()); try { getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations); } catch (Exception e) { e.printStackTrace(); } }
通过调用上述方法,即可实现 Android 上的通讯录功能。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/136713.html