Kit*_*fer 5 sms junit android unit-testing pdu
我尝试在BroadcastReceiver上编写一个单元测试,当收到短信时会收到通知.它不应该是默认的应用程序.相反,我只需要这个双因素身份验证.对于这种情况,我用[1]创建了一个PDU.
但是当我把它传递给BroadcastReceiver时,发送者的手机nr永远不会被android读取它只是null.正文文本被返回.
@TargetApi(Build.VERSION_CODES.KITKAT)
@Test
public void testOnReceive() throws Exception {
final byte[] decodedPDU = BaseEncoding.base16().decode(PDU);
final ReceiveSmsBroadcastReceiver receiveSmsBroadcastReceiver = spy(new ReceiveSmsBroadcastReceiver(true));
final Intent intent = new Intent();
intent.putExtra("format",SmsConstants.FORMAT_3GPP);
intent.putExtra("pdus", new Object[]{decodedPDU});
intent.setAction("android.provider.Telephony.SMS_RECEIVED");
intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, 1);
receiveSmsBroadcastReceiver.onReceive(InstrumentationRegistry.getTargetContext(), intent);
Run Code Online (Sandbox Code Playgroud)
在接收器中,我这样做以获取SMSMessage对象:
@TargetApi(Build.VERSION_CODES.KITKAT)
private void getSMSKitKat(final Context context, final Intent intent) {
final SmsMessage[] messagesFromIntent = Telephony.Sms.Intents.getMessagesFromIntent(intent);
Run Code Online (Sandbox Code Playgroud)
我在这里收到一个SmsMessage数组,正文消息是正确的.但我需要测试我的支票发件人电话号码才能通知用户界面收到短信:但是这里的nr总是为空:
private boolean isCorrectSender(@Nullable final SmsMessage message) {
if (message == null) {
return false;
}
final String nr = message.getOriginatingAddress();
Run Code Online (Sandbox Code Playgroud)
有人能指出我这里有什么不对吗?
PS:SMSConstants和PhoneConstants都是我从AOSP获取的框架类,因为这些API是非公开的
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |