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

Android高版本(API36+)非默认短信APP发送短信问题求助

如何绕过Android近期限制,让非默认短信APP后台发送短信?

我正在开发一款Android应用(最低API级别:24,目标API级别:36),需要发送短信,使用SmsManager.getDefault()方法获取实例。原本以为Android新版本仅限制Google Play商店应用必须是默认短信APP才能发送短信,设备层面不会强制限制,但实际并非如此。找到的相关教程要么过时、要么不够具体,都未覆盖该场景。

应用尝试发送短信时崩溃,栈跟踪信息如下:

Process: xyz.Pangea.smsforwarder, PID: 19038
java.lang.RuntimeException: Unable to start receiver xyz.Pangea.smsforwarder.SMSListener: java.lang.SecurityException: Sending SMS message: uid 10218 does not have android.permission.SEND_SMS.
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:5672)
    at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2904)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loopOnce(Looper.java:273)
    at android.os.Looper.loop(Looper.java:363)
    at android.app.ActivityThread.main(ActivityThread.java:10060)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
Caused by: java.lang.SecurityException: Sending SMS message: uid 10218 does not have android.permission.SEND_SMS.
    at android.os.Parcel.createExceptionOrNull(Parcel.java:3354)
    at android.os.Parcel.createException(Parcel.java:3338)
    at android.os.Parcel.readException(Parcel.java:3321)
    at android.os.Parcel.readException(Parcel.java:3263)
    at com.android.internal.telephony.ISms$Stub$Proxy.sendTextForSubscriber(ISms.java:1976)
    at android.telephony.SmsManager$1.onSuccess(SmsManager.java:768)
    at android.telephony.SmsManager.sendResolverResult(SmsManager.java:1818)
    at android.telephony.SmsManager.resolveSubscriptionForOperation(SmsManager.java:1779)
    at android.telephony.SmsManager.sendTextMessageInternal(SmsManager.java:763)
    at android.telephony.SmsManager.sendTextMessage(SmsManager.java:596)
    at xyz.Pangea.smsforwarder.SMSListener.onReceive(SMSListener.kt:54)
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:5663)

... 9 more

我的AndroidManifest.xml配置如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-feature
        android:name="android.hardware.telephony"
        android:required="false" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"
        tools:ignore="SmsAndCallLogPolicy" />
    <uses-permission android:name="android.permission.SEND_SMS"
        tools:ignore="SmsAndCallLogPolicy" />
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SMSForwarder">
        <receiver
            android:exported="true"
            android:enabled="true"
            android:name="xyz.Pangea.smsforwarder.SMSListener"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter
                android:priority="2147483647">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

注意:应用接收短信功能完全正常,且测试手机的设置中已为该应用授予短信权限(系统未区分发送和接收权限)。

我想知道是否有方法绕过该限制?我知道可以通过Intent调用默认短信应用发送消息,但这种方式会打断用户操作,我希望能在后台完成发送。

针对可能的建议,提前说明:

  • 为何不使用现有应用?现有应用均要求登录或注册第三方服务。
  • 已有开源版本?我希望自己开发。
  • 违反政策无法上架Play商店?该应用仅作私人使用,不会上架Google Play商店,也不会开源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 06:07:27