You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用设为默认短信应用后如何正常发送SMS?

问题:默认短信应用状态下无法发送SMS的解决方案

我需要在应用中实现SMS的发送与删除功能,现有情况如下:

  • 发送SMS原本无需应用成为默认短信应用,但删除操作必须要求应用是默认短信应用
  • 异常现象:应用非默认时发送代码正常工作,设为默认后发送反而失效;删除操作符合预期(仅默认状态下可用)

我推测问题出在:只有默认短信应用能写入SMS Provider,所以需要手动写入,但奇怪的是其他应用在我的应用设为默认时,用相同的发送代码依然能正常发送。

我尝试手动写入SMS Provider,分别写入content://sms/outbox和content://sms/sent,均未成功;不过写入content://sms/sent后,预装短信应用中会显示该消息。

发送SMS代码

public static void sendSMS(String phoneNo, String msg, Context context) {
    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, msg, null, null);
        Toast.makeText(context, "Message Sent",
                Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        Toast.makeText(context,e.getMessage().toString(),
                Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }
}

删除SMS代码

public static void deleteSMS(Context context, String message, String number) {
    try {
        Log.i(MainActivity.TAG, "delteSMS: try statement");
        Uri uriSms = Uri.parse("content://sms/sent");
        Cursor c = context.getContentResolver().query(uriSms,
                new String[] { "_id", "thread_id", "address",
                        "person", "date", "body" }, null, null, null);

        if (c != null && c.moveToFirst()) {
            do {
                long id = c.getLong(0);
                long threadId = c.getLong(1);
                String address = c.getString(2);
                String body = c.getString(5);
//                    Log.i(MainActivity.TAG, "Found SMS: " + body);

                if (message.equals(body) && address.equals(number)) {
                    Log.i(MainActivity.TAG, "Deleting sms with" + threadId);
                    context.getContentResolver().delete(
                            Uri.parse("content://sms/" + id), null, null);
                }
            } while (c.moveToNext());
        }
    } catch (Exception e) {
        Log.i(MainActivity.TAG, "Could not delete SMS from inbox: " + e.getMessage());
    }
}

核心需求:解决应用设为默认短信应用后,无法正常发送SMS的问题。

内容的提问来源于stack exchange,提问作者CSMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 23:45:38