Tôi đang cố gắng tạo ứng dụng Android viết thư trong Hộp đã gửi của hệ thống. Các tin nhắn này không được gửi qua mạng GSM đến người nhận, ý tưởng chỉ để viết chúng trong Nhà cung cấp nội dung đã gửi.Android KitKat (API 19) - Cách viết tin nhắn trong Nhà cung cấp nội dung SMS, không gửi chúng, từ Ứng dụng không mặc định?
Còn bây giờ, tôi có mã này:
Manifest file
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
Java Class
private final String SENT_SMS_CONTENT_PROVIDER_URI_OLDER_API_19 = "content://sms/sent";
ContentValues values = new ContentValues();
values.put("address", mNumber);
values.put("body", mMessage);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
mContext.getContentResolver().insert(Telephony.Sms.Sent.CONTENT_URI, values);
else mContext.getContentResolver().insert(Uri.parse(SENT_SMS_CONTENT_PROVIDER_URI_OLDER_API_19), values);
Đối với một thiết bị với một phiên bản API thấp hơn 19, điều này triển khai hoạt động tốt. Đối với các phiên bản sdk cũ hơn, chỉ cần truy cập vào nhà cung cấp nội dung được xác định bởi nội dung uri : // sms/sent.
Đối với các phiên bản sdk mới hơn, tính năng này không hoạt động. Rõ ràng, Android đã thay đổi cách quản lý mô-đun SMS trong bản phát hành KitKat. Theo bài viết tiếp theo, chỉ ứng dụng SMS mặc định mới có thể viết và cập nhật Nhà cung cấp nội dung SMS mới (android.provider.Telephony.Sms.Sent - nội dung trước đó: // sms/sent cũng không khả dụng):
Xem xét hành vi của ứng dụng này, việc chuyển ứng dụng SMS mặc định là không có ý nghĩa. Ứng dụng này không cần đọc tin nhắn SMS từ nhà cung cấp nội dung và không được gửi bất kỳ tin nhắn nào bằng SmsManager.getDefault(). SendTextMessage. Điều duy nhất cần làm là viết một số tin nhắn trong Nhà cung cấp đã gửi.
Như bạn có thể hiểu, nó cũng không được chấp nhận và có thể thực hiện để yêu cầu người dùng thay đổi ứng dụng mặc định thành của tôi và sau đó quay lại ứng dụng SMS trước đó, mỗi khi cần viết tin nhắn trong Sent (điều này được đề xuất trong phần "Lời khuyên cho SMS backup & khôi phục ứng dụng" trong Blogspot của nhà phát triển Android).
Trong phần tiếp theo cho thấy một số cách để thôi ẩn các OP_WRITE_SMS tùy chọn:
Thật không may, các mã tiếp theo ngừng làm việc dành cho Android 4.4.2:
Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.Settings");
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
intent.putExtra(":android:show_fragment", "com.android.settings.applications.AppOpsSummary");
startActivity(intent);
tôi ra khỏi các giải pháp để khắc phục vấn đề này.
Thư mục đã gửi không chỉ phản ánh các thư đã được gửi (hoặc ít nhất là cố gắng) và không phải là thư "giả mạo" chưa? –