gpt4 book ai didi

android - Android 系统从未发送 WAP_PUSH_DELIVER Intent

转载 作者:行者123 更新时间:2023-12-04 21:01:28 27 4
gpt4 key购买 nike

我花了 5 个小时尝试使自定义 MMS 广播接收器工作。我在 Stackoverflow 上搜索并搜索了无数看似重复的线程,但没有解决方法或建议的解决方案。

一些随机调试说明:

  • 该应用程序设置为默认短信应用程序并授予所有权限。
  • 已通过 Google 的 Messenger 验证 RCS 已禁用。
  • DUT 是具有最新软件更新的 Pixel 3 XL。
  • 测试了很多3P短信/彩信app,几乎都收不到彩信,Pulse做。 Pulse 的开发人员提供了一个开源 MMS 库。我尝试利用这个库但没有成功。核心问题似乎是 WAP_PUSH_DELIVER Intent 不会发送到我的应用程序。
  • 解码 Pulse 应用程序以查看其 AndroidManifest.xml并尝试对我的一些不同的更改。没有成功。
  • 测试彩信是通过 Google Voice 帐户通过旧版 Hangouts 和其他 Android 手机通过各种运营商发送的。
  • 短信都可以正常接收SMS_RECEIVEDSMS_DELIVER (如果应用程序是默认的 SMS 应用程序)。
  • WAP_PUSH_RECEIVED如果应用程序是 ,则接收事件不是 默认短信一
  • WAP_PUSH_DELIVER如果应用程序 未收到事件是 默认短信一
  • 已安装 Intent Intercepter并运行 $ adb logcat | fgrep -i intent验证是否记录了任何权限问题。没有。

  • 彩信接收器:
    public class MmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    System.out.println("MMS Received: " + intent.getAction());
    }
    }

    显现:


    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" />
    <uses-permission android:name="android.permission.BROADCAST_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.provider.Telephony.SMS_RECEIVED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>


    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.SEND" />
    <action android:name="android.intent.action.SENDTO" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="sms" />
    <data android:scheme="smsto" />
    <data android:scheme="mms" />
    <data android:scheme="mmsto" />
    </intent-filter>
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

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

    <receiver
    android:name=".SmsReceiver"
    android:permission="android.permission.BROADCAST_SMS">
    <intent-filter>
    <action android:name="android.provider.Telephony.SMS_DELIVER" />
    </intent-filter>
    </receiver>

    <receiver
    android:name=".MmsReceiver"
    android:permission="android.permission.BROADCAST_WAP_PUSH">
    <intent-filter>
    <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
    <data android:mimeType="application/vnd.wap.mms-message" />
    </intent-filter>
    </receiver>

    <service
    android:name=".HeadlessSmsSendService"
    android:exported="true"
    android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE" >
    <intent-filter>
    <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
    <category android:name="android.intent.category.DEFAULT" />

    <data android:scheme="sms" />
    <data android:scheme="smsto" />
    <data android:scheme="mms" />
    <data android:scheme="mmsto" />
    </intent-filter>
    </service>
    </application>

    </manifest>

    不用说,Logcat 中没有记录该消息。

    最佳答案

    Make your app the default SMS app

    On Android 4.4, only one app can receive the new SMS_DELIVER_ACTION intent, which the system broadcasts when a new SMS message arrives. Which app receives this broadcast is determined by which app the user has selected as the default SMS app in system settings. Likewise, only the default SMS app receives the new WAP_PUSH_DELIVER_ACTION intent when a new MMS arrives.



    看起来您的应用不是默认的默认短信应用。因此,不允许您收听传入的广播。

    您需要的是导航用户选择您的应用程序作为默认值。就像官方文档所说的那样:
    public class ComposeSmsActivity extends Activity {

    @Override
    protected void onResume() {
    super.onResume();

    final String myPackageName = getPackageName();
    if (!Telephony.Sms.getDefaultSmsPackage(this).equals(myPackageName)) {
    // App is not default.
    // Show the "not currently set as the default SMS app" interface
    View viewGroup = findViewById(R.id.not_default_app);
    viewGroup.setVisibility(View.VISIBLE);

    // Set up a button that allows the user to change the default SMS app
    Button button = (Button) findViewById(R.id.change_default_app);
    button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    Intent intent =
    new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
    intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
    myPackageName);
    startActivity(intent);
    }
    });
    } else {
    // App is the default.
    // Hide the "not currently set as the default SMS app" interface
    View viewGroup = findViewById(R.id.not_default_app);
    viewGroup.setVisibility(View.GONE);
    }
    }
    }

    还有, WAP_PUSH_DELIVER_ACTION强调

    This intent will only be delivered to the default sms app

    关于android - Android 系统从未发送 WAP_PUSH_DELIVER Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490729/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com