接收彩信 - 没有默认申请[KITKAT]

时间:2014-08-05 15:14:48

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

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

嗯....也许我可以通过onReceive()方法从我的应用程序中将mms保存到SMS提供程序,然后启动本机(无默认)sms / mms应用程序来显示它们?这是好主意吗?我怎么能这样做?

MmsReceiver

public class MmsReceiver extends BroadcastReceiver {

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

的Manifest.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>

1 个答案:

答案 0 :(得分:1)

  

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

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

现在降级的应用尝试发送彩信时会出现问题。引用您链接的博客:

  

虽然当您的应用不是默认的短信应用时,系统会将发送的短信写入短信提供商,但写入已发送的彩信

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

  

虽然您的应用未被选为默认应用,但您必须了解对应用的限制并根据需要禁用功能

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

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

相关问题