要在Android中将短信保存到收件箱,您需要使用广播接收器(BroadcastReceiver)来监听短信的到达事件。以下是一个简单的示例,展示了如何实现这个功能:
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<receiver android:name=".SmsReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 获取短信内容
Bundle bundle = intent.getExtras();
SmsMessage[] messages = null;
String strMessage = "";
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i], "3gpp");
strMessage += messages[i].getMessageBody();
}
// 将短信保存到收件箱
String address = messages[0].getDisplayOriginatingAddress();
String body = strMessage;
String time = messages[0].getTimestampMillis() + "";
saveSmsToInbox(context, address, body, time);
// 显示收到的短信内容
Toast.makeText(context, "收到短信:" + strMessage, Toast.LENGTH_SHORT).show();
}
}
// 将短信保存到收件箱
private void saveSmsToInbox(Context context, String address, String body, String time) {
ContentValues values = new ContentValues();
values.put("address", address);
values.put("body", body);
values.put("date", time);
context.getContentResolver().insert(Uri.parse("content://sms/inbox"), values);
}
}
这个示例中,我们创建了一个名为SmsReceiver的广播接收器,用于监听短信到达事件。当收到短信时,我们将短信内容保存到收件箱中,并显示收到的短信内容。
注意:在Android 6.0(API 23)及更高版本的设备上,需要在运行时请求WRITE_EXTERNAL_STORAGE权限。具体实现方式可以参考官方文档。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云