Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4affb51c authored by Sarah Chin's avatar Sarah Chin
Browse files

Make MmsManager public and @SystemService

Test: manually verify can send/receive MMS
Bug: 144004293
Change-Id: I39cde852252e18f71f98e328354df66611c9db60
parent c54923ca
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -10008,6 +10008,7 @@ package android.content {
    field public static final String MEDIA_ROUTER_SERVICE = "media_router";
    field public static final String MEDIA_SESSION_SERVICE = "media_session";
    field public static final String MIDI_SERVICE = "midi";
    field public static final String MMS_SERVICE = "mms";
    field public static final int MODE_APPEND = 32768; // 0x8000
    field public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; // 0x8
    field @Deprecated public static final int MODE_MULTI_PROCESS = 4; // 0x4
@@ -45543,6 +45544,11 @@ package android.telephony {
    method @Nullable public android.telephony.mbms.StreamingService startStreaming(android.telephony.mbms.StreamingServiceInfo, @NonNull java.util.concurrent.Executor, android.telephony.mbms.StreamingServiceCallback);
  }
  public class MmsManager {
    method public void downloadMultimediaMessage(int, @NonNull String, @NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
    method public void sendMultimediaMessage(int, @NonNull android.net.Uri, @Nullable String, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
  }
  @Deprecated public class NeighboringCellInfo implements android.os.Parcelable {
    ctor @Deprecated public NeighboringCellInfo();
    ctor @Deprecated public NeighboringCellInfo(int, int);
@@ -45780,8 +45786,8 @@ package android.telephony {
    method public String createAppSpecificSmsToken(android.app.PendingIntent);
    method @Nullable public String createAppSpecificSmsTokenWithPackageInfo(@Nullable String, @NonNull android.app.PendingIntent);
    method public java.util.ArrayList<java.lang.String> divideMessage(String);
    method public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
    method @Nullable public android.os.Bundle getCarrierConfigValues();
    method @Deprecated public void downloadMultimediaMessage(android.content.Context, String, android.net.Uri, android.os.Bundle, android.app.PendingIntent);
    method @NonNull public android.os.Bundle getCarrierConfigValues();
    method public static android.telephony.SmsManager getDefault();
    method public static int getDefaultSmsSubscriptionId();
    method public static android.telephony.SmsManager getSmsManagerForSubscriptionId(int);
@@ -45790,7 +45796,7 @@ package android.telephony {
    method public int getSubscriptionId();
    method public void injectSmsPdu(byte[], String, android.app.PendingIntent);
    method public void sendDataMessage(String, String, short, byte[], android.app.PendingIntent, android.app.PendingIntent);
    method public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent);
    method @Deprecated public void sendMultimediaMessage(android.content.Context, android.net.Uri, String, android.os.Bundle, android.app.PendingIntent);
    method public void sendMultipartTextMessage(String, String, java.util.ArrayList<java.lang.String>, java.util.ArrayList<android.app.PendingIntent>, java.util.ArrayList<android.app.PendingIntent>);
    method public void sendTextMessage(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
    method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.SEND_SMS}) public void sendTextMessageWithoutPersisting(String, String, String, android.app.PendingIntent, android.app.PendingIntent);
+8 −0
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ import android.service.persistentdata.IPersistentDataBlockService;
import android.service.persistentdata.PersistentDataBlockManager;
import android.service.vr.IVrManager;
import android.telecom.TelecomManager;
import android.telephony.MmsManager;
import android.telephony.TelephonyFrameworkInitializer;
import android.telephony.TelephonyRegistryManager;
import android.util.ArrayMap;
@@ -631,6 +632,13 @@ public final class SystemServiceRegistry {
                return new TelecomManager(ctx.getOuterContext());
            }});

        registerService(Context.MMS_SERVICE, MmsManager.class,
                new CachedServiceFetcher<MmsManager>() {
                    @Override
                    public MmsManager createService(ContextImpl ctx) {
                        return new MmsManager(ctx.getOuterContext());
                    }});

        registerService(Context.UI_MODE_SERVICE, UiModeManager.class,
                new CachedServiceFetcher<UiModeManager>() {
            @Override
+12 −0
Original line number Diff line number Diff line
@@ -3416,6 +3416,7 @@ public abstract class Context {
            TELEPHONY_SUBSCRIPTION_SERVICE,
            CARRIER_CONFIG_SERVICE,
            EUICC_SERVICE,
            MMS_SERVICE,
            TELECOM_SERVICE,
            CLIPBOARD_SERVICE,
            INPUT_METHOD_SERVICE,
@@ -3612,6 +3613,8 @@ public abstract class Context {
     * @see android.telephony.CarrierConfigManager
     * @see #EUICC_SERVICE
     * @see android.telephony.euicc.EuiccManager
     * @see #MMS_SERVICE
     * @see android.telephony.MmsManager
     * @see #INPUT_METHOD_SERVICE
     * @see android.view.inputmethod.InputMethodManager
     * @see #UI_MODE_SERVICE
@@ -4286,6 +4289,15 @@ public abstract class Context {
    @SystemApi
    public static final String EUICC_CARD_SERVICE = "euicc_card";

    /**
     * Use with {@link #getSystemService(String)} to retrieve a
     * {@link android.telephony.MmsManager} to send/receive MMS messages.
     *
     * @see #getSystemService(String)
     * @see android.telephony.MmsManager
     */
    public static final String MMS_SERVICE = "mms";

    /**
     * Use with {@link #getSystemService(String)} to retrieve a
     * {@link android.content.ClipboardManager} for accessing and modifying
+16 −14
Original line number Diff line number Diff line
@@ -16,8 +16,12 @@

package android.telephony;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemService;
import android.app.ActivityThread;
import android.app.PendingIntent;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
@@ -27,22 +31,18 @@ import com.android.internal.telephony.IMms;

/**
 * Manages MMS operations such as sending multimedia messages.
 * Get this object by calling the static method {@link #getInstance()}.
 * @hide
 * Get this object by calling Context#getSystemService(Context#MMS_SERVICE).
 */
@SystemService(Context.MMS_SERVICE)
public class MmsManager {
    private static final String TAG = "MmsManager";

    /** Singleton object constructed during class initialization. */
    private static final MmsManager sInstance = new MmsManager();
    private final Context mContext;

    /**
     * Get the MmsManager singleton instance.
     *
     * @return the {@link MmsManager} singleton instance.
     * @hide
     */
    public static MmsManager getInstance() {
        return sInstance;
    public MmsManager(@NonNull Context context) {
        mContext = context;
    }

    /**
@@ -56,8 +56,9 @@ public class MmsManager {
     * @param sentIntent if not NULL this <code>PendingIntent</code> is broadcast when the message
     *                   is successfully sent, or failed
     */
    public void sendMultimediaMessage(int subId, Uri contentUri, String locationUrl,
            Bundle configOverrides, PendingIntent sentIntent) {
    public void sendMultimediaMessage(int subId, @NonNull Uri contentUri,
            @Nullable String locationUrl, @Nullable Bundle configOverrides,
            @Nullable PendingIntent sentIntent) {
        try {
            final IMms iMms = IMms.Stub.asInterface(ServiceManager.getService("imms"));
            if (iMms == null) {
@@ -84,8 +85,9 @@ public class MmsManager {
     *  broadcast when the message is downloaded, or the download is failed
     * @throws IllegalArgumentException if locationUrl or contentUri is empty
     */
    public void downloadMultimediaMessage(int subId, String locationUrl, Uri contentUri,
            Bundle configOverrides, PendingIntent downloadedIntent) {
    public void downloadMultimediaMessage(int subId, @NonNull String locationUrl,
            @NonNull Uri contentUri, @Nullable Bundle configOverrides,
            @Nullable PendingIntent downloadedIntent) {
        try {
            final IMms iMms = IMms.Stub.asInterface(ServiceManager.getService("imms"));
            if (iMms == null) {
+15 −7
Original line number Diff line number Diff line
@@ -2448,14 +2448,18 @@ public final class SmsManager {
     * @param sentIntent if not NULL this <code>PendingIntent</code> is
     *  broadcast when the message is successfully sent, or failed
     * @throws IllegalArgumentException if contentUri is empty
     * @deprecated use {@link MmsManager#sendMultimediaMessage} instead.
     */
    public void sendMultimediaMessage(Context context, Uri contentUri, String locationUrl,
            Bundle configOverrides, PendingIntent sentIntent) {
        if (contentUri == null) {
            throw new IllegalArgumentException("Uri contentUri null");
        }
        MmsManager.getInstance().sendMultimediaMessage(getSubscriptionId(), contentUri,
                    locationUrl, configOverrides, sentIntent);
        MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
        if (m != null) {
            m.sendMultimediaMessage(getSubscriptionId(), contentUri, locationUrl, configOverrides,
                    sentIntent);
        }
    }

    /**
@@ -2479,6 +2483,7 @@ public final class SmsManager {
     * @param downloadedIntent if not NULL this <code>PendingIntent</code> is
     *  broadcast when the message is downloaded, or the download is failed
     * @throws IllegalArgumentException if locationUrl or contentUri is empty
     * @deprecated use {@link MmsManager#downloadMultimediaMessage} instead.
     */
    public void downloadMultimediaMessage(Context context, String locationUrl, Uri contentUri,
            Bundle configOverrides, PendingIntent downloadedIntent) {
@@ -2488,8 +2493,11 @@ public final class SmsManager {
        if (contentUri == null) {
            throw new IllegalArgumentException("Uri contentUri null");
        }
        MmsManager.getInstance().downloadMultimediaMessage(getSubscriptionId(), locationUrl,
                contentUri, configOverrides, downloadedIntent);
        MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
        if (m != null) {
            m.downloadMultimediaMessage(getSubscriptionId(), locationUrl, contentUri,
                    configOverrides, downloadedIntent);
        }
    }

    // MMS send/download failure result codes
@@ -2531,9 +2539,9 @@ public final class SmsManager {
     * </p>
     *
     * @return the bundle key/values pairs that contains MMS configuration values
     *  or an empty Bundle if they cannot be found.
     */
    @Nullable
    public Bundle getCarrierConfigValues() {
    @NonNull public Bundle getCarrierConfigValues() {
        try {
            ISms iSms = getISmsService();
            if (iSms != null) {
@@ -2542,7 +2550,7 @@ public final class SmsManager {
        } catch (RemoteException ex) {
            // ignore it
        }
        return null;
        return new Bundle();
    }

    /**