Rob*_*ert 9 sms android broadcastreceiver android-intent
我有一个SmsReceiver我想在设备上测试真实的,但是我不愿意将一堆真正的短信发送到我的设备上,这会堆积我的电话费;-)
所以我认为我必须能够intent采取行动RECEIVED_SMS,短信数据和发送短信所需的所有其他东西.在谷歌快速浏览之后,我最终来到这里:http://blog.dev001.net/post/14085892020/android-generate-incoming-sms-from-within-your-app.我从这篇文章中得到了一些想法并制作了我的杀手级Android应用程序,用于在设备上创建和"发送"短信用于测试目的,我必须说它有点像魅力,除了我的接收器onReceive没有被调用,发送的短信直接进入收件箱.我知道我的接收器工作,如果我发送一个真正的短信到我的设备它触发,如果我发送短信从DDMS到模拟器它也触发,所以这应该没问题.
那么我想念的是什么permissions,某些Intent.putExtras或其他东西?任何提示都非常有用,如果能够实现这一点,它将有助于我测试和开发我的应用程序.
我的接收器在清单中:
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
清单中的权限(接收申请):
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)
清单中的权限(发送应用程序):
<uses-permission android:name="android.permission.BROADCAST_SMS"/>
Run Code Online (Sandbox Code Playgroud)
还应该提到在LogCat或控制台中没有出现任何错误.
这是我的接收器在清单中的样子:
<receiver android:name="com.mike.broadcastexample.BroadcastReceiverClass" android:exported="true" >
<intent-filter android:priority="999" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
我唯一要做的额外事情是我将android:priority 设置为 999并添加android:exported="true"
这些是我用于该应用程序的唯一权限:
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
Run Code Online (Sandbox Code Playgroud)
我的应用程序也遇到了同样的问题,它是 HTC ONE,它有 Android 4.3,但在对这个接收器进行一些更改后,它的工作绝对完美。
你也可以尝试一下。