java - 尝试将短信插入收件箱,但没有任何反应

标签 java android sms smsmanager

我正在尝试从备份插入短信,但是当我运行代码时,没有发生任何错误或任何事情,并且短信应用程序或收件箱中没有短信。

还尝试添加日期、读取状态等,但没有成功

具有读取和写入短信权限。 最小SDK:23

这是代码:

public void addSms(String number , String body){

    ContentValues values = new ContentValues();
    values.put("address", number);
    values.put("body", body);
    getContentResolver().insert(Uri.parse("content://sms/inbox"),values);

}

并从以下位置调用 addSms:

for (int i = 0; i < smssJson2.length(); i++) {
            try {
                JSONObject obj = smssJson2.getJSONObject(i);
                String body = obj.getString("message");
                String number = obj.getString("number");
                addSms(number,body);
            } catch (Exception e) {
                e.getLocalizedMessage();
            }
        }

检查收件箱(此代码有效):

Uri uriSMSURI = Uri.parse("content://sms/inbox");
    Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null);

    while (cur != null && cur.moveToNext()) {
        String address = cur.getString(cur.getColumnIndex("address"));
        String body = cur.getString(cur.getColumnIndexOrThrow("body"));

        JSONObject obj = new JSONObject();
        try {
            obj.put("number",address);
            obj.put("message",body);
            Log.d("SMS",obj.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    cur.close();

最佳答案

解决了!

如果应用程序的 Android 版本为 4.4(KitKat) 或更高版本,您必须将应用程序设置为默认消息应用程序,以便将短信添加到 SmsProvider 或发送或接收短信和彩信。

对于备份/恢复应用程序,您应该遵循以下步骤:

1- 将您的应用更改为默认消息应用。

2-插入短信

3- 将默认消息传递应用程序更改为之前的应用程序。

资源和更多信息HERE!

关于java - 尝试将短信插入收件箱,但没有任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56419309/

相关文章:

java - 返回空 token

android - 通过触摸或手势识别移动 RecyclerView

windows-phone-7 - WP7短信发送报告应用

java - java的通知框架

java - 使用 gson 解析两个(或多个)对象中包含同名字段的 json

java - System.setProperty ("user.timezone"和 "America/Chicago"之间的区别;和 TimeZone.setDefault(TimeZone.getTimeZone ("America/Chicago"));

java - 使用注释 @DataJpaTest 进行测试 - EmbeddedDatabaseType 是必需的

Android通话记录日期转换

android - 与同时异步任务的 SQLite 的多个连接

java - 从 j2ee Web 应用程序接收和发送 SMS