在 Android API 开发中,我们可以使用 SMS 短信服务处理和获取联系人的方法。本文将深入浅析这些方法,包括如何发送和接收短信、如何获取联系人信息等。同时,本文将提供两个示例,以帮助读者更好地理解这些方法。
发送和接收短信
要在 Android 中发送和接收短信,我们可以使用 SmsManager 和 BroadcastReceiver 类。具体来说,我们可以使用 SmsManager 类来发送短信,使用 BroadcastReceiver 类来接收短信。下面是一个示例,演示了如何使用 SmsManager 类发送短信:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
在上面的代码中,我们首先获取了 SmsManager 的实例,然后调用 sendTextMessage() 方法来发送短信。其中,phoneNumber 表示短信接收者的电话号码,message 表示短信内容。
下面是一个示例,演示了如何使用 BroadcastReceiver 类接收短信:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String message = smsMessage.getMessageBody();
String sender = smsMessage.getOriginatingAddress();
// 处理短信
}
}
}
}
在上面的代码中,我们创建了一个名为 SmsReceiver 的 BroadcastReceiver 类,并重写了 onReceive() 方法。在该方法中,我们首先获取了短信的内容和发送者的电话号码,然后可以对短信进行处理。
获取联系人信息
要在 Android 中获取联系人信息,我们可以使用 ContentResolver 和 Cursor 类。具体来说,我们可以使用 ContentResolver 类来查询联系人信息,使用 Cursor 类来遍历查询结果。下面是一个示例,演示了如何获取联系人信息:
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
if (phoneCursor != null && phoneCursor.moveToFirst()) {
do {
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 处理联系人信息
} while (phoneCursor.moveToNext());
phoneCursor.close();
}
} while (cursor.moveToNext());
cursor.close();
}
在上面的代码中,我们首先获取了 ContentResolver 的实例,然后使用 query() 方法查询联系人信息。接着,我们使用 Cursor 类遍历查询结果,并获取联系人的姓名和电话号码。最后,我们可以对联系人信息进行处理。
示例说明
下面是两个示例,分别演示了如何在 Android 中发送和接收短信,以及如何获取联系人信息。
示例一:发送和接收短信
在这个示例中,我们演示了如何在 Android 中发送和接收短信。首先,我们使用 SmsManager 类发送短信。例如:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
在上面的代码中,我们使用 SmsManager 类发送了一条短信,其中 phoneNumber 表示短信接收者的电话号码,message 表示短信内容。
然后,我们使用 BroadcastReceiver 类接收短信。例如:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String message = smsMessage.getMessageBody();
String sender = smsMessage.getOriginatingAddress();
// 处理短信
}
}
}
}
在上面的代码中,我们创建了一个名为 SmsReceiver 的 BroadcastReceiver 类,并重写了 onReceive() 方法。在该方法中,我们获取了短信的内容和发送者的电话号码,然后可以对短信进行处理。
示例二:获取联系人信息
在这个示例中,我们演示了如何在 Android 中获取联系人信息。首先,我们使用 ContentResolver 类查询联系人信息。例如:
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
if (phoneCursor != null && phoneCursor.moveToFirst()) {
do {
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 处理联系人信息
} while (phoneCursor.moveToNext());
phoneCursor.close();
}
} while (cursor.moveToNext());
cursor.close();
}
在上面的代码中,我们使用 ContentResolver 类查询了联系人信息,并使用 Cursor 类遍历查询结果。在遍历查询结果的过程中,我们获取了联系人的姓名和电话号码,然后可以对联系人信息进行处理。
总结
在 Android API 开发中,我们可以使用 SmsManager 和 BroadcastReceiver 类来发送和接收短信,使用 ContentResolver 和 Cursor 类来获取联系人信息。合理地操作,我们可以在 Android 中成功处理短信和获取联系人信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android API开发之SMS短信服务处理和获取联系人的方法 - Python技术站