1 package com.xtremelabs.robolectric.shadows;
2 
3 import android.app.PendingIntent;
4 import android.telephony.SmsManager;
5 import android.text.TextUtils;
6 
7 import com.xtremelabs.robolectric.Robolectric;
8 import com.xtremelabs.robolectric.internal.Implementation;
9 import com.xtremelabs.robolectric.internal.Implements;
10 import com.xtremelabs.robolectric.internal.RealObject;
11 
12 @Implements(SmsManager.class)
13 public class ShadowSmsManager {
14 
15 	@RealObject
16 	private static SmsManager realManager = Robolectric.newInstanceOf(SmsManager.class);
17 
18 	private TextSmsParams lastTextSmsParams = null;
19 
20 	@Implementation
getDefault()21 	public static SmsManager getDefault() {
22 		return realManager;
23 	}
24 
25 	@Implementation
sendTextMessage( String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)26 	public void sendTextMessage(
27 			String destinationAddress, String scAddress, String text,
28             PendingIntent sentIntent, PendingIntent deliveryIntent) {
29 
30 		if (TextUtils.isEmpty(destinationAddress))
31             throw new IllegalArgumentException("Invalid destinationAddress");
32 
33         if (TextUtils.isEmpty(text))
34             throw new IllegalArgumentException("Invalid message body");
35 
36 		lastTextSmsParams = new TextSmsParams(
37 			destinationAddress,
38 			scAddress,
39 			text,
40 			sentIntent,
41 			deliveryIntent );
42 	}
43 
getLastSentTextMessageParams()44 	public TextSmsParams getLastSentTextMessageParams() {
45 		return lastTextSmsParams;
46 	}
47 
clearLastSentTextMessageParams()48     public void clearLastSentTextMessageParams() {
49         lastTextSmsParams = null;
50     }
51 
52 	public class TextSmsParams {
53 		private String destinationAddress;
54 		private String scAddress;
55 		private String text;
56 		private PendingIntent sentIntent;
57 		private PendingIntent deliveryIntent;
58 
TextSmsParams( String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)59 		public TextSmsParams(
60 			String destinationAddress, String scAddress, String text,
61             PendingIntent sentIntent, PendingIntent deliveryIntent) {
62 			this.destinationAddress = destinationAddress;
63 			this.scAddress = scAddress;
64 			this.text = text;
65 			this.sentIntent = sentIntent;
66 			this.deliveryIntent = deliveryIntent;
67 		}
68 
getDestinationAddress()69 		public String getDestinationAddress() {
70 			return destinationAddress;
71 		}
72 
getScAddress()73 		public String getScAddress() {
74 			return scAddress;
75 		}
76 
getText()77 		public String getText() {
78 			return text;
79 		}
80 
getSentIntent()81 		public PendingIntent getSentIntent() {
82 			return sentIntent;
83 		}
84 
getDeliveryIntent()85 		public PendingIntent getDeliveryIntent() {
86 			return deliveryIntent;
87 		}
88 	}
89 }
90