Loading src/java/android/provider/Telephony.java +96 −19 Original line number Diff line number Diff line Loading @@ -46,6 +46,64 @@ import java.util.regex.Pattern; /** * The Telephony provider contains data related to phone operation, specifically SMS and MMS * messages and access to the APN list, including the MMSC to use. * * <p class="note"><strong>Note:</strong> These APIs are not available on all Android-powered * devices. If your app depends on telephony features such as for managing SMS messages, include * a <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>} * </a> element in your manifest that declares the {@code "android.hardware.telephony"} hardware * feature. Alternatively, you can check for telephony availability at runtime using either * {@link android.content.pm.PackageManager#hasSystemFeature * hasSystemFeature(PackageManager.FEATURE_TELEPHONY)} or {@link * android.telephony.TelephonyManager#getPhoneType}.</p> * * <h3>Creating an SMS app</h3> * * <p>Only the default SMS app (selected by the user in system settings) is able to write to the * SMS Provider (the tables defined within the {@code Telephony} class) and only the default SMS * app receives the {@link android.provider.Telephony.Sms.Intents#SMS_DELIVER_ACTION} broadcast * when the user receives an SMS or the {@link * android.provider.Telephony.Sms.Intents#WAP_PUSH_DELIVER_ACTION} broadcast when the user * receives an MMS.</p> * * <p>Any app that wants to behave as the user's default SMS app must handle the following intents: * <ul> * <li>In a broadcast receiver, include an intent filter for {@link Sms.Intents#SMS_DELIVER_ACTION} * (<code>"android.provider.Telephony.SMS_DELIVER"</code>). The broadcast receiver must also * require the {@link android.Manifest.permission#BROADCAST_SMS} permission. * <p>This allows your app to directly receive incoming SMS messages.</p></li> * <li>In a broadcast receiver, include an intent filter for {@link * Sms.Intents#WAP_PUSH_DELIVER_ACTION}} ({@code "android.provider.Telephony.WAP_PUSH_DELIVER"}) * with the MIME type <code>"application/vnd.wap.mms-message"</code>. * The broadcast receiver must also require the {@link * android.Manifest.permission#BROADCAST_WAP_PUSH} permission. * <p>This allows your app to directly receive incoming MMS messages.</p></li> * <li>In your activity that delivers new messages, include an intent filter for * {@link android.content.Intent#ACTION_SENDTO} (<code>"android.intent.action.SENDTO" * </code>) with schemas, <code>sms:</code>, <code>smsto:</code>, <code>mms:</code>, and * <code>mmsto:</code>. * <p>This allows your app to receive intents from other apps that want to deliver a * message.</p></li> * <li>In a service, include an intent filter for {@link * android.telephony.TelephonyManager#ACTION_RESPOND_VIA_MESSAGE} * (<code>"android.intent.action.RESPOND_VIA_MESSAGE"</code>) with schemas, * <code>sms:</code>, <code>smsto:</code>, <code>mms:</code>, and <code>mmsto:</code>. * This service must also require the {@link * android.Manifest.permission#SEND_RESPOND_VIA_MESSAGE} permission. * <p>This allows users to respond to incoming phone calls with an immediate text message * using your app.</p></li> * </ul> * * <p>Other apps that are not selected as the default SMS app can only <em>read</em> the SMS * Provider, but may also be notified when a new SMS arrives by listening for the {@link * Sms.Intents#SMS_RECEIVED_ACTION} * broadcast, which is a non-abortable broadcast that may be delivered to multiple apps. This * broadcast is intended for apps that—while not selected as the default SMS app—need to * read special incoming messages such as to perform phone number verification.</p> * * <p>For more information about building SMS apps, read the blog post, <a * href="http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html" * >Getting Your SMS Apps Ready for KitKat</a>.</p> * */ public final class Telephony { private static final String TAG = "Telephony"; Loading Loading @@ -755,7 +813,7 @@ public final class Telephony { * the user. The intent will have the following extra values:</p> * * <ul> * <li><em>pdus</em> - An Object[] of byte[]s containing the PDUs * <li><em>"pdus"</em> - An Object[] of byte[]s containing the PDUs * that make up the message.</li> * </ul> * Loading @@ -764,6 +822,12 @@ public final class Telephony { * * <p>If a BroadcastReceiver encounters an error while processing * this intent it should set the result code appropriately.</p> * * <p class="note"><strong>Note:</strong> * The broadcast receiver that filters for this intent must declare * {@link android.Manifest.permission#BROADCAST_SMS} as a required permission in * the <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code * <receiver>}</a> tag. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String SMS_DELIVER_ACTION = Loading @@ -777,7 +841,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>pdus</em> - An Object[] of byte[]s containing the PDUs * <li><em>"pdus"</em> - An Object[] of byte[]s containing the PDUs * that make up the message.</li> * </ul> * Loading @@ -798,7 +862,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>pdus</em> - An Object[] of byte[]s containing the PDUs * <li><em>"pdus"</em> - An Object[] of byte[]s containing the PDUs * that make up the message.</li> * </ul> * Loading @@ -819,12 +883,12 @@ public final class Telephony { * the user. The intent will have the following extra values:</p> * * <ul> * <li><em>transactionId (Integer)</em> - The WAP transaction ID</li> * <li><em>pduType (Integer)</em> - The WAP PDU type</li> * <li><em>header (byte[])</em> - The header of the message</li> * <li><em>data (byte[])</em> - The data payload of the message</li> * <li><em>contentTypeParameters (HashMap<String,String>)</em> * - Any parameters associated with the content type * <li><em>"transactionId"</em> - (Integer) The WAP transaction ID</li> * <li><em>"pduType"</em> - (Integer) The WAP PDU type</li> * <li><em>"header"</em> - (byte[]) The header of the message</li> * <li><em>"data"</em> - (byte[]) The data payload of the message</li> * <li><em>"contentTypeParameters" </em> * -(HashMap<String,String>) Any parameters associated with the content type * (decoded from the WSP Content-Type header)</li> * </ul> * Loading @@ -837,6 +901,12 @@ public final class Telephony { * <p>If any unassigned well-known parameters are encountered, the key of the map will * be 'unassigned/0x...', where '...' is the hex value of the unassigned parameter. If * a parameter has No-Value the value in the map will be null.</p> * * <p class="note"><strong>Note:</strong> * The broadcast receiver that filters for this intent must declare * {@link android.Manifest.permission#BROADCAST_WAP_PUSH} as a required permission in * the <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code * <receiver>}</a> tag. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String WAP_PUSH_DELIVER_ACTION = Loading @@ -850,12 +920,12 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>transactionId (Integer)</em> - The WAP transaction ID</li> * <li><em>pduType (Integer)</em> - The WAP PDU type</li> * <li><em>header (byte[])</em> - The header of the message</li> * <li><em>data (byte[])</em> - The data payload of the message</li> * <li><em>contentTypeParameters (HashMap<String,String>)</em> * - Any parameters associated with the content type * <li><em>"transactionId"</em> - (Integer) The WAP transaction ID</li> * <li><em>"pduType"</em> - (Integer) The WAP PDU type</li> * <li><em>"header"</em> - (byte[]) The header of the message</li> * <li><em>"data"</em> - (byte[]) The data payload of the message</li> * <li><em>"contentTypeParameters"</em> * - (HashMap<String,String>) Any parameters associated with the content type * (decoded from the WSP Content-Type header)</li> * </ul> * Loading @@ -879,7 +949,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>message</em> - An SmsCbMessage object containing the broadcast message * <li><em>"message"</em> - An SmsCbMessage object containing the broadcast message * data. This is not an emergency alert, so ETWS and CMAS data will be null.</li> * </ul> * Loading @@ -899,7 +969,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>message</em> - An SmsCbMessage object containing the broadcast message * <li><em>"message"</em> - An SmsCbMessage object containing the broadcast message * data, including ETWS or CMAS warning notification info if present.</li> * </ul> * Loading @@ -919,7 +989,7 @@ public final class Telephony { * have the following extra values:</p> * * <ul> * <li><em>operations</em> - An array of CdmaSmsCbProgramData objects containing * <li><em>"operations"</em> - An array of CdmaSmsCbProgramData objects containing * the service category operations (add/delete/clear) to perform.</li> * </ul> * Loading Loading @@ -949,7 +1019,7 @@ public final class Telephony { * following extra value:</p> * * <ul> * <li><em>result</em> - An int result code, e.g. {@link #RESULT_SMS_OUT_OF_MEMORY} * <li><em>"result"</em> - An int result code, e.g. {@link #RESULT_SMS_OUT_OF_MEMORY} * indicating the error returned to the network.</li> * </ul> */ Loading Loading @@ -2479,6 +2549,13 @@ public final class Telephony { */ public static final String MVNO_MATCH_DATA = "mvno_match_data"; /** * Initial Preferred APN * true : initial preferred APN, false : not initial preferred APN. * Default is false. * @hide */ public static final String PREFERRED = "preferred"; } /** Loading src/java/android/telephony/SmsManager.java +26 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,10 @@ import java.util.List; /** * Manages SMS operations such as sending data, text, and pdu SMS messages. * Get this object by calling the static method SmsManager.getDefault(). * Get this object by calling the static method {@link #getDefault()}. * * <p>For information about how to behave as the default SMS app on Android 4.4 (API level 19) * and higher, see {@link android.provider.Telephony}. */ public final class SmsManager { /** Singleton object constructed during class initialization. */ Loading @@ -50,6 +53,16 @@ public final class SmsManager { /** * Send a text based SMS. * * <p class="note"><strong>Note:</strong> Using this method requires that your app has the * {@link android.Manifest.permission#SEND_SMS} permission.</p> * * <p class="note"><strong>Note:</strong> Beginning with Android 4.4 (API level 19), if * <em>and only if</em> an app is not selected as the default SMS app, the system automatically * writes messages sent using this method to the SMS Provider (the default SMS app is always * responsible for writing its sent messages to the SMS Provider). For information about * how to behave as the default SMS app, see {@link android.provider.Telephony}.</p> * * * @param destinationAddress the address to send the message to * @param scAddress is the service center address or null to use * the current default SMSC Loading Loading @@ -171,6 +184,15 @@ public final class SmsManager { * divided the message into correctly sized parts by calling * <code>divideMessage</code>. * * <p class="note"><strong>Note:</strong> Using this method requires that your app has the * {@link android.Manifest.permission#SEND_SMS} permission.</p> * * <p class="note"><strong>Note:</strong> Beginning with Android 4.4 (API level 19), if * <em>and only if</em> an app is not selected as the default SMS app, the system automatically * writes messages sent using this method to the SMS Provider (the default SMS app is always * responsible for writing its sent messages to the SMS Provider). For information about * how to behave as the default SMS app, see {@link android.provider.Telephony}.</p> * * @param destinationAddress the address to send the message to * @param scAddress is the service center address or null to use * the current default SMSC Loading Loading @@ -236,6 +258,9 @@ public final class SmsManager { /** * Send a data based SMS to a specific application port. * * <p class="note"><strong>Note:</strong> Using this method requires that your app has the * {@link android.Manifest.permission#SEND_SMS} permission.</p> * * @param destinationAddress the address to send the message to * @param scAddress is the service center address or null to use * the current default SMSC Loading src/java/android/telephony/SmsMessage.java +1 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; /** * A Short Message Service message. * @see android.provider.Telephony.Sms.Intents#getMessagesFromIntent */ public class SmsMessage { private static final String LOG_TAG = "SmsMessage"; Loading src/java/com/android/internal/telephony/CallManager.java +23 −1 Original line number Diff line number Diff line Loading @@ -109,6 +109,9 @@ public class CallManager { // default phone as the first phone registered, which is PhoneBase obj private Phone mDefaultPhone; // save a cached copy of Ims Phone private Phone mImsPhone; private boolean mSpeedUpAudioForMtCall = false; protected CmHandler mHandler; Loading Loading @@ -189,6 +192,7 @@ public class CallManager { mBackgroundCalls = new ArrayList<Call>(); mForegroundCalls = new ArrayList<Call>(); mDefaultPhone = null; mImsPhone = null; initHandler(); } Loading Loading @@ -346,6 +350,10 @@ public class CallManager { public boolean registerPhone(Phone phone) { Phone basePhone = getPhoneBase(phone); if (phone != null && phone.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) { mImsPhone = phone; } if (basePhone != null && !mPhones.contains(basePhone)) { if (DBG) { Loading Loading @@ -402,6 +410,14 @@ public class CallManager { return mDefaultPhone; } /** * return the IMS phone or null if not available */ public Phone getImsPhone() { return mImsPhone; } /** * @return the phone associated with the foreground call */ Loading Loading @@ -1923,6 +1939,11 @@ public class CallManager { return false; } private boolean isRingingDuplicateCall() { return ((mRingingCalls.size() > 1) && (mRingingCalls.get(0).getLatestConnection(). getAddress().equals(mRingingCalls.get(1).getLatestConnection().getAddress()))); } protected class CmHandler extends Handler { @Override Loading @@ -1939,7 +1960,8 @@ public class CallManager { break; case EVENT_NEW_RINGING_CONNECTION: if (VDBG) Rlog.d(LOG_TAG, " handleMessage (EVENT_NEW_RINGING_CONNECTION)"); if (getActiveFgCallState().isDialing() || hasMoreThanOneRingingCall()) { if (getActiveFgCallState().isDialing() || (hasMoreThanOneRingingCall() && !isRingingDuplicateCall())) { Connection c = (Connection) ((AsyncResult) msg.obj).result; try { Rlog.d(LOG_TAG, "silently drop incoming call: " + c.getCall()); Loading src/java/com/android/internal/telephony/CellBroadcastHandler.java +4 −6 Original line number Diff line number Diff line Loading @@ -30,15 +30,13 @@ import android.telephony.SmsCbMessage; * completes and our result receiver is called. */ public class CellBroadcastHandler extends WakeLockStateMachine { protected final Context mContext; protected CellBroadcastHandler(Context context) { this("CellBroadcastHandler", context); private CellBroadcastHandler(Context context) { this("CellBroadcastHandler", context, null); } protected CellBroadcastHandler(String debugTag, Context context) { super(debugTag, context); mContext = context; protected CellBroadcastHandler(String debugTag, Context context, PhoneBase phone) { super(debugTag, context, phone); } /** Loading Loading
src/java/android/provider/Telephony.java +96 −19 Original line number Diff line number Diff line Loading @@ -46,6 +46,64 @@ import java.util.regex.Pattern; /** * The Telephony provider contains data related to phone operation, specifically SMS and MMS * messages and access to the APN list, including the MMSC to use. * * <p class="note"><strong>Note:</strong> These APIs are not available on all Android-powered * devices. If your app depends on telephony features such as for managing SMS messages, include * a <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>} * </a> element in your manifest that declares the {@code "android.hardware.telephony"} hardware * feature. Alternatively, you can check for telephony availability at runtime using either * {@link android.content.pm.PackageManager#hasSystemFeature * hasSystemFeature(PackageManager.FEATURE_TELEPHONY)} or {@link * android.telephony.TelephonyManager#getPhoneType}.</p> * * <h3>Creating an SMS app</h3> * * <p>Only the default SMS app (selected by the user in system settings) is able to write to the * SMS Provider (the tables defined within the {@code Telephony} class) and only the default SMS * app receives the {@link android.provider.Telephony.Sms.Intents#SMS_DELIVER_ACTION} broadcast * when the user receives an SMS or the {@link * android.provider.Telephony.Sms.Intents#WAP_PUSH_DELIVER_ACTION} broadcast when the user * receives an MMS.</p> * * <p>Any app that wants to behave as the user's default SMS app must handle the following intents: * <ul> * <li>In a broadcast receiver, include an intent filter for {@link Sms.Intents#SMS_DELIVER_ACTION} * (<code>"android.provider.Telephony.SMS_DELIVER"</code>). The broadcast receiver must also * require the {@link android.Manifest.permission#BROADCAST_SMS} permission. * <p>This allows your app to directly receive incoming SMS messages.</p></li> * <li>In a broadcast receiver, include an intent filter for {@link * Sms.Intents#WAP_PUSH_DELIVER_ACTION}} ({@code "android.provider.Telephony.WAP_PUSH_DELIVER"}) * with the MIME type <code>"application/vnd.wap.mms-message"</code>. * The broadcast receiver must also require the {@link * android.Manifest.permission#BROADCAST_WAP_PUSH} permission. * <p>This allows your app to directly receive incoming MMS messages.</p></li> * <li>In your activity that delivers new messages, include an intent filter for * {@link android.content.Intent#ACTION_SENDTO} (<code>"android.intent.action.SENDTO" * </code>) with schemas, <code>sms:</code>, <code>smsto:</code>, <code>mms:</code>, and * <code>mmsto:</code>. * <p>This allows your app to receive intents from other apps that want to deliver a * message.</p></li> * <li>In a service, include an intent filter for {@link * android.telephony.TelephonyManager#ACTION_RESPOND_VIA_MESSAGE} * (<code>"android.intent.action.RESPOND_VIA_MESSAGE"</code>) with schemas, * <code>sms:</code>, <code>smsto:</code>, <code>mms:</code>, and <code>mmsto:</code>. * This service must also require the {@link * android.Manifest.permission#SEND_RESPOND_VIA_MESSAGE} permission. * <p>This allows users to respond to incoming phone calls with an immediate text message * using your app.</p></li> * </ul> * * <p>Other apps that are not selected as the default SMS app can only <em>read</em> the SMS * Provider, but may also be notified when a new SMS arrives by listening for the {@link * Sms.Intents#SMS_RECEIVED_ACTION} * broadcast, which is a non-abortable broadcast that may be delivered to multiple apps. This * broadcast is intended for apps that—while not selected as the default SMS app—need to * read special incoming messages such as to perform phone number verification.</p> * * <p>For more information about building SMS apps, read the blog post, <a * href="http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html" * >Getting Your SMS Apps Ready for KitKat</a>.</p> * */ public final class Telephony { private static final String TAG = "Telephony"; Loading Loading @@ -755,7 +813,7 @@ public final class Telephony { * the user. The intent will have the following extra values:</p> * * <ul> * <li><em>pdus</em> - An Object[] of byte[]s containing the PDUs * <li><em>"pdus"</em> - An Object[] of byte[]s containing the PDUs * that make up the message.</li> * </ul> * Loading @@ -764,6 +822,12 @@ public final class Telephony { * * <p>If a BroadcastReceiver encounters an error while processing * this intent it should set the result code appropriately.</p> * * <p class="note"><strong>Note:</strong> * The broadcast receiver that filters for this intent must declare * {@link android.Manifest.permission#BROADCAST_SMS} as a required permission in * the <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code * <receiver>}</a> tag. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String SMS_DELIVER_ACTION = Loading @@ -777,7 +841,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>pdus</em> - An Object[] of byte[]s containing the PDUs * <li><em>"pdus"</em> - An Object[] of byte[]s containing the PDUs * that make up the message.</li> * </ul> * Loading @@ -798,7 +862,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>pdus</em> - An Object[] of byte[]s containing the PDUs * <li><em>"pdus"</em> - An Object[] of byte[]s containing the PDUs * that make up the message.</li> * </ul> * Loading @@ -819,12 +883,12 @@ public final class Telephony { * the user. The intent will have the following extra values:</p> * * <ul> * <li><em>transactionId (Integer)</em> - The WAP transaction ID</li> * <li><em>pduType (Integer)</em> - The WAP PDU type</li> * <li><em>header (byte[])</em> - The header of the message</li> * <li><em>data (byte[])</em> - The data payload of the message</li> * <li><em>contentTypeParameters (HashMap<String,String>)</em> * - Any parameters associated with the content type * <li><em>"transactionId"</em> - (Integer) The WAP transaction ID</li> * <li><em>"pduType"</em> - (Integer) The WAP PDU type</li> * <li><em>"header"</em> - (byte[]) The header of the message</li> * <li><em>"data"</em> - (byte[]) The data payload of the message</li> * <li><em>"contentTypeParameters" </em> * -(HashMap<String,String>) Any parameters associated with the content type * (decoded from the WSP Content-Type header)</li> * </ul> * Loading @@ -837,6 +901,12 @@ public final class Telephony { * <p>If any unassigned well-known parameters are encountered, the key of the map will * be 'unassigned/0x...', where '...' is the hex value of the unassigned parameter. If * a parameter has No-Value the value in the map will be null.</p> * * <p class="note"><strong>Note:</strong> * The broadcast receiver that filters for this intent must declare * {@link android.Manifest.permission#BROADCAST_WAP_PUSH} as a required permission in * the <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code * <receiver>}</a> tag. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String WAP_PUSH_DELIVER_ACTION = Loading @@ -850,12 +920,12 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>transactionId (Integer)</em> - The WAP transaction ID</li> * <li><em>pduType (Integer)</em> - The WAP PDU type</li> * <li><em>header (byte[])</em> - The header of the message</li> * <li><em>data (byte[])</em> - The data payload of the message</li> * <li><em>contentTypeParameters (HashMap<String,String>)</em> * - Any parameters associated with the content type * <li><em>"transactionId"</em> - (Integer) The WAP transaction ID</li> * <li><em>"pduType"</em> - (Integer) The WAP PDU type</li> * <li><em>"header"</em> - (byte[]) The header of the message</li> * <li><em>"data"</em> - (byte[]) The data payload of the message</li> * <li><em>"contentTypeParameters"</em> * - (HashMap<String,String>) Any parameters associated with the content type * (decoded from the WSP Content-Type header)</li> * </ul> * Loading @@ -879,7 +949,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>message</em> - An SmsCbMessage object containing the broadcast message * <li><em>"message"</em> - An SmsCbMessage object containing the broadcast message * data. This is not an emergency alert, so ETWS and CMAS data will be null.</li> * </ul> * Loading @@ -899,7 +969,7 @@ public final class Telephony { * values:</p> * * <ul> * <li><em>message</em> - An SmsCbMessage object containing the broadcast message * <li><em>"message"</em> - An SmsCbMessage object containing the broadcast message * data, including ETWS or CMAS warning notification info if present.</li> * </ul> * Loading @@ -919,7 +989,7 @@ public final class Telephony { * have the following extra values:</p> * * <ul> * <li><em>operations</em> - An array of CdmaSmsCbProgramData objects containing * <li><em>"operations"</em> - An array of CdmaSmsCbProgramData objects containing * the service category operations (add/delete/clear) to perform.</li> * </ul> * Loading Loading @@ -949,7 +1019,7 @@ public final class Telephony { * following extra value:</p> * * <ul> * <li><em>result</em> - An int result code, e.g. {@link #RESULT_SMS_OUT_OF_MEMORY} * <li><em>"result"</em> - An int result code, e.g. {@link #RESULT_SMS_OUT_OF_MEMORY} * indicating the error returned to the network.</li> * </ul> */ Loading Loading @@ -2479,6 +2549,13 @@ public final class Telephony { */ public static final String MVNO_MATCH_DATA = "mvno_match_data"; /** * Initial Preferred APN * true : initial preferred APN, false : not initial preferred APN. * Default is false. * @hide */ public static final String PREFERRED = "preferred"; } /** Loading
src/java/android/telephony/SmsManager.java +26 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,10 @@ import java.util.List; /** * Manages SMS operations such as sending data, text, and pdu SMS messages. * Get this object by calling the static method SmsManager.getDefault(). * Get this object by calling the static method {@link #getDefault()}. * * <p>For information about how to behave as the default SMS app on Android 4.4 (API level 19) * and higher, see {@link android.provider.Telephony}. */ public final class SmsManager { /** Singleton object constructed during class initialization. */ Loading @@ -50,6 +53,16 @@ public final class SmsManager { /** * Send a text based SMS. * * <p class="note"><strong>Note:</strong> Using this method requires that your app has the * {@link android.Manifest.permission#SEND_SMS} permission.</p> * * <p class="note"><strong>Note:</strong> Beginning with Android 4.4 (API level 19), if * <em>and only if</em> an app is not selected as the default SMS app, the system automatically * writes messages sent using this method to the SMS Provider (the default SMS app is always * responsible for writing its sent messages to the SMS Provider). For information about * how to behave as the default SMS app, see {@link android.provider.Telephony}.</p> * * * @param destinationAddress the address to send the message to * @param scAddress is the service center address or null to use * the current default SMSC Loading Loading @@ -171,6 +184,15 @@ public final class SmsManager { * divided the message into correctly sized parts by calling * <code>divideMessage</code>. * * <p class="note"><strong>Note:</strong> Using this method requires that your app has the * {@link android.Manifest.permission#SEND_SMS} permission.</p> * * <p class="note"><strong>Note:</strong> Beginning with Android 4.4 (API level 19), if * <em>and only if</em> an app is not selected as the default SMS app, the system automatically * writes messages sent using this method to the SMS Provider (the default SMS app is always * responsible for writing its sent messages to the SMS Provider). For information about * how to behave as the default SMS app, see {@link android.provider.Telephony}.</p> * * @param destinationAddress the address to send the message to * @param scAddress is the service center address or null to use * the current default SMSC Loading Loading @@ -236,6 +258,9 @@ public final class SmsManager { /** * Send a data based SMS to a specific application port. * * <p class="note"><strong>Note:</strong> Using this method requires that your app has the * {@link android.Manifest.permission#SEND_SMS} permission.</p> * * @param destinationAddress the address to send the message to * @param scAddress is the service center address or null to use * the current default SMSC Loading
src/java/android/telephony/SmsMessage.java +1 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; /** * A Short Message Service message. * @see android.provider.Telephony.Sms.Intents#getMessagesFromIntent */ public class SmsMessage { private static final String LOG_TAG = "SmsMessage"; Loading
src/java/com/android/internal/telephony/CallManager.java +23 −1 Original line number Diff line number Diff line Loading @@ -109,6 +109,9 @@ public class CallManager { // default phone as the first phone registered, which is PhoneBase obj private Phone mDefaultPhone; // save a cached copy of Ims Phone private Phone mImsPhone; private boolean mSpeedUpAudioForMtCall = false; protected CmHandler mHandler; Loading Loading @@ -189,6 +192,7 @@ public class CallManager { mBackgroundCalls = new ArrayList<Call>(); mForegroundCalls = new ArrayList<Call>(); mDefaultPhone = null; mImsPhone = null; initHandler(); } Loading Loading @@ -346,6 +350,10 @@ public class CallManager { public boolean registerPhone(Phone phone) { Phone basePhone = getPhoneBase(phone); if (phone != null && phone.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) { mImsPhone = phone; } if (basePhone != null && !mPhones.contains(basePhone)) { if (DBG) { Loading Loading @@ -402,6 +410,14 @@ public class CallManager { return mDefaultPhone; } /** * return the IMS phone or null if not available */ public Phone getImsPhone() { return mImsPhone; } /** * @return the phone associated with the foreground call */ Loading Loading @@ -1923,6 +1939,11 @@ public class CallManager { return false; } private boolean isRingingDuplicateCall() { return ((mRingingCalls.size() > 1) && (mRingingCalls.get(0).getLatestConnection(). getAddress().equals(mRingingCalls.get(1).getLatestConnection().getAddress()))); } protected class CmHandler extends Handler { @Override Loading @@ -1939,7 +1960,8 @@ public class CallManager { break; case EVENT_NEW_RINGING_CONNECTION: if (VDBG) Rlog.d(LOG_TAG, " handleMessage (EVENT_NEW_RINGING_CONNECTION)"); if (getActiveFgCallState().isDialing() || hasMoreThanOneRingingCall()) { if (getActiveFgCallState().isDialing() || (hasMoreThanOneRingingCall() && !isRingingDuplicateCall())) { Connection c = (Connection) ((AsyncResult) msg.obj).result; try { Rlog.d(LOG_TAG, "silently drop incoming call: " + c.getCall()); Loading
src/java/com/android/internal/telephony/CellBroadcastHandler.java +4 −6 Original line number Diff line number Diff line Loading @@ -30,15 +30,13 @@ import android.telephony.SmsCbMessage; * completes and our result receiver is called. */ public class CellBroadcastHandler extends WakeLockStateMachine { protected final Context mContext; protected CellBroadcastHandler(Context context) { this("CellBroadcastHandler", context); private CellBroadcastHandler(Context context) { this("CellBroadcastHandler", context, null); } protected CellBroadcastHandler(String debugTag, Context context) { super(debugTag, context); mContext = context; protected CellBroadcastHandler(String debugTag, Context context, PhoneBase phone) { super(debugTag, context, phone); } /** Loading