【问题标题】:Receive MMS - no default application [KITKAT]接收彩信 - 无默认应用程序 [KITKAT]
【发布时间】:2014-08-06 00:20:29
【问题描述】:

我为 Galaxy s5 (Kitkat 4.4.2) 编写了短信应用程序来接收/发送短信。一切正常,但我的应用程序写入 SMS 提供程序,因此可能应用程序必须是默认的 SMS 应用程序。我根据 -http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html 添加了所需的权限。但我不想阅读/发送彩信。是否可以通过本机短信/彩信应用程序接收彩信(无默认)并通过我的应用程序接收/发送短信(默认)?我知道要发送 mms 本机应用程序必须设置为默认值,但我只是在考虑接收。现在我的应用程序是默认的,我有空的彩信接收器,当用户收到彩信时它会丢失。

嗯....也许我可以在onReceive() 方法中从我的应用程序将彩信保存到 SMS 提供程序,然后启动本机(非默认)短信/彩信应用程序来显示它们?这是个好主意吗?我该怎么做?

MmsReceiver

public class MmsReceiver extends BroadcastReceiver {

   @Override
   public void onReceive(Context context, Intent intent) {
   }
}

清单.xml

   <receiver
        android:name="com.mateusz.simplesmsapp.broadcasts.MmsReceiver"
        android:exported="true"
        android:permission="android.permission.BROADCAST_WAP_PUSH" >
        <intent-filter>
            <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
            <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVE" />
            <data android:mimeType="application/vnd.wap.mms-message" />
        </intent-filter>
    </receiver>

【问题讨论】:

    标签: android android-manifest android-4.4-kitkat android-broadcast mms


    【解决方案1】:

    也许我可以在 onReceive() 方法中从我的应用程序将 mms 保存到 SMS 提供程序,然后启动本机(非默认)sms/mms 应用程序以显示它们?

    我想这是可能的,但我认为最终效果不会很好。为此,您的应用程序在首次启动时需要使用Telephony.Sms.getDefaultSmsPackage() 获取已设置的默认应用程序,并存储此包名称以便在您的应用程序在收到彩信后写入后启动它。这部分我认为没有问题。

    当这个现已降级的应用尝试发送彩信时,问题就来了。引用您链接的博客:

    虽然系统将发送的 SMS 消息写入 SMS Provider 而您的应用不是默认的 SMS 应用,但它确实写入发送的 MMS 消息

    现在,这可能是可以接受的,如果您的应用也可以进行传出写入。我看到的第一个问题是,据我所知,发送彩信时没有系统范围的广播,因此您的应用程序不会知道它正在发生,更不用说访问未明确传递给它的数据了。其次,再次引用:

    虽然您的应用未被选为默认应用,但您必须了解应用的限制并酌情禁用功能

    假设平台应用程序遵循这些规定的做法,当它不再是默认设置时,它很可能会禁用其传出彩信功能。但是,即使它没有,并且它从直接发送恢复为通过 Intent 将请求和数据传递到默认应用程序,那么,此时您正在处理传入和传出的 MMS,从而打败了整点您的解决方法。

    最后,让您的应用完全合规可能会更容易。

    【讨论】:

      猜你喜欢
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      相关资源
      最近更新 更多