我有一个 SmsReceiver
,我想在设备上对其进行真实测试,但是我不愿意向我的设备发送一堆真实的短信,这会堆积我的电话账单;- )
所以我认为我必须能够通过操作RECEIVED_SMS
、短信数据和发送短信所需的所有其他内容来启动intent
。在谷歌上快速浏览后,我最终来到这里:http://blog.dev001.net/post/14085892020/android-generate-incoming-sms-from-within-your-app .
我从这篇文章中汲取了一些想法,并制作了我的 killer 级 android 应用程序,用于在设备上创建和“发送”短信以进行测试,我必须说它的效果非常好,除了我的接收器 onReceive
未被调用,发送的短信直接进入收件箱。我知道我的接收器工作正常,如果我向我的设备发送一条真实的短信它会触发,如果我从 DDMS 向模拟器发送一条短信它也会触发,所以应该没问题。
那么是否有任何权限
、一些Intent.putExtras
或其他我想念的东西?任何提示都非常有用,如果可以使它起作用,它将对我测试和开发我的应用程序有很大帮助。
list 中的我的接收器:
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
list 中的权限(接收应用程序):
<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" />
list 中的权限(发送应用程序):
<uses-permission android:name="android.permission.BROADCAST_SMS"/>
还应提及 LogCat 或控制台中未显示任何错误。
最佳答案
这是我的接收器在 list 中的样子:
<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>
我唯一要做的额外工作是将 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" />
我的应用程序也遇到了同样的问题,它是搭载 Android 4.3 的 HTC ONE,但在对该接收器进行一些更改后,它的工作绝对完美。
你也可以试试看。
关于android - "Real"短信接收测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22311033/