Mã này sẽ làm việc cho tất cả các phiên bản Android trong đó có trên kitkat (19)
public boolean saveSms(String phoneNumber, String message, String readState, String time, String folderName) {
boolean ret = false;
try {
ContentValues values = new ContentValues();
values.put("address", phoneNumber);
values.put("body", message);
values.put("read", readState); //"0" for have not read sms and "1" for have read sms
values.put("date", time);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Uri uri = Telephony.Sms.Sent.CONTENT_URI;
if(folderName.equals("inbox")){
uri = Telephony.Sms.Inbox.CONTENT_URI;
}
mActivity.getContentResolver().insert(uri, values);
}
else {
mActivity.getContentResolver().insert(Uri.parse("content://sms/" + folderName), values);
}
ret = true;
} catch (Exception ex) {
ex.printStackTrace();
ret = false;
}
return ret;
}
Làm thế nào để gọi
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
final String myPackageName = getPackageName();
if (!Telephony.Sms.getDefaultSmsPackage(this).equals(myPackageName)) {
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, myPackageName);
startActivityForResult(intent, 1);
}else {
saveSms("111111", "mmmmssssggggg", "0", "", "inbox");
}
}else {
saveSms("111111", "mmmmssssggggg", "0", "", "inbox");
}
onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
final String myPackageName = getPackageName();
if (Telephony.Sms.getDefaultSmsPackage(mActivity).equals(myPackageName)) {
//Write to the default sms app
saveSms("111111", "mmmmssssggggg", "0", "", "inbox");
}
}
}
}
}
Để cụ thể hơn hoặc liên kết ứng dụng theo mẫu: http://wisdomitsol.com/blog/android/sms/how-to-programmatically-save-sms-to-inbox-or-sent-in-android
Nguồn
2012-12-18 16:05:53
@ Lo'oris, @ereOn: Lập trình có nghĩa là bạn muốn làm điều đó "thông qua mã". Đó là một từ hoàn toàn hợp lệ, được tìm thấy trong hầu hết các từ điển đã được in trong những năm gần đây. Có những lúc cần phân biệt giữa câu hỏi thường xuyên mà chúng tôi nhận được từ người dùng * không * cố gắng làm điều gì đó thông qua mã. Những câu hỏi đó, tất nhiên, thuộc về Super User thay vì ở đây. Vấn đề là một số nhiệm vụ đơn giản hơn nhiều và thường được thực hiện nhiều hơn * mà không cần * viết một dòng mã. Người làm sáng tỏ giúp mọi người không cung cấp những câu trả lời rõ ràng đó. –