1 package com.xtremelabs.robolectric.shadows; 2 3 import android.telephony.PhoneStateListener; 4 import android.telephony.TelephonyManager; 5 import com.xtremelabs.robolectric.internal.Implementation; 6 import com.xtremelabs.robolectric.internal.Implements; 7 8 @Implements(TelephonyManager.class) 9 public class ShadowTelephonyManager { 10 11 private PhoneStateListener listener; 12 private int eventFlags; 13 private String deviceId; 14 private String networkOperatorName; 15 private String networkCountryIso; 16 private String networkOperator; 17 private boolean readPhoneStatePermission = true; 18 private int phoneType = TelephonyManager.PHONE_TYPE_GSM; 19 private String simCountryIso; 20 21 @Implementation listen(PhoneStateListener listener, int events)22 public void listen(PhoneStateListener listener, int events) { 23 this.listener = listener; 24 this.eventFlags = events; 25 } 26 27 /** 28 * Non-Android accessor. Returns the most recent listener 29 * passed to #listen(). 30 * 31 * @return 32 */ getListener()33 public PhoneStateListener getListener() { 34 return listener; 35 } 36 37 /** 38 * Non-Android accessor. Returns the most recent flags 39 * passed to #listen(). 40 * @return 41 */ getEventFlags()42 public int getEventFlags() { 43 return eventFlags; 44 } 45 46 @Implementation getDeviceId()47 public String getDeviceId() { 48 checkReadPhoneStatePermission(); 49 return deviceId; 50 } 51 setDeviceId(String newDeviceId)52 public void setDeviceId(String newDeviceId) { 53 deviceId = newDeviceId; 54 } 55 setNetworkOperatorName(String networkOperatorName)56 public void setNetworkOperatorName(String networkOperatorName) { 57 this.networkOperatorName = networkOperatorName; 58 } 59 60 @Implementation getNetworkOperatorName()61 public String getNetworkOperatorName() { 62 return networkOperatorName; 63 } 64 setNetworkCountryIso(String networkCountryIso)65 public void setNetworkCountryIso(String networkCountryIso) { 66 this.networkCountryIso = networkCountryIso; 67 } 68 69 @Implementation getNetworkCountryIso()70 public String getNetworkCountryIso() { 71 return networkCountryIso; 72 } 73 setNetworkOperator(String networkOperator)74 public void setNetworkOperator(String networkOperator) { 75 this.networkOperator = networkOperator; 76 } 77 78 @Implementation getNetworkOperator()79 public String getNetworkOperator() { 80 return networkOperator; 81 } 82 83 @Implementation getSimCountryIso()84 public String getSimCountryIso() { 85 return simCountryIso; 86 } 87 setSimCountryIso(String simCountryIso)88 public void setSimCountryIso(String simCountryIso) { 89 this.simCountryIso = simCountryIso; 90 } 91 setReadPhoneStatePermission(boolean readPhoneStatePermission)92 public void setReadPhoneStatePermission(boolean readPhoneStatePermission) { 93 this.readPhoneStatePermission = readPhoneStatePermission; 94 } 95 checkReadPhoneStatePermission()96 private void checkReadPhoneStatePermission() { 97 if (!readPhoneStatePermission) { 98 throw new SecurityException(); 99 } 100 } 101 102 @Implementation getPhoneType()103 public int getPhoneType() { 104 return phoneType; 105 } 106 setPhoneType(int phoneType)107 public void setPhoneType(int phoneType) { 108 this.phoneType = phoneType; 109 } 110 } 111