diff options
15 files changed, 334 insertions, 80 deletions
diff --git a/Android.bp b/Android.bp index 459f179ea584..3957f7e164ca 100644 --- a/Android.bp +++ b/Android.bp @@ -479,6 +479,8 @@ java_library { "media/java/android/media/tv/ITvRemoteServiceInput.aidl", "media/java/android/service/media/IMediaBrowserService.aidl", "media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl", + "telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl", + "telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl", "telecomm/java/com/android/internal/telecom/ICallScreeningAdapter.aidl", "telecomm/java/com/android/internal/telecom/ICallScreeningService.aidl", "telecomm/java/com/android/internal/telecom/IVideoCallback.aidl", diff --git a/api/current.txt b/api/current.txt index e3db2566af48..9f37db22cd0c 100644 --- a/api/current.txt +++ b/api/current.txt @@ -40959,6 +40959,16 @@ package android.telecom { field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5 } + public abstract class CallRedirectionService extends android.app.Service { + ctor public CallRedirectionService(); + method public final void cancelCall(); + method public android.os.IBinder onBind(android.content.Intent); + method public abstract void onPlaceCall(android.net.Uri, android.telecom.PhoneAccountHandle); + method public final void placeCallUnmodified(); + method public final void redirectCall(android.net.Uri, android.telecom.PhoneAccountHandle); + field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.CallRedirectionService"; + } + public abstract class CallScreeningService extends android.app.Service { ctor public CallScreeningService(); method public android.os.IBinder onBind(android.content.Intent); diff --git a/core/java/android/app/slice/ISliceManager.aidl b/core/java/android/app/slice/ISliceManager.aidl index 69852f3ce745..6f73d02caa12 100644 --- a/core/java/android/app/slice/ISliceManager.aidl +++ b/core/java/android/app/slice/ISliceManager.aidl @@ -33,7 +33,7 @@ interface ISliceManager { // Perms. void grantSlicePermission(String callingPkg, String toPkg, in Uri uri); void revokeSlicePermission(String callingPkg, String toPkg, in Uri uri); - int checkSlicePermission(in Uri uri, String pkg, int pid, int uid, + int checkSlicePermission(in Uri uri, String callingPkg, String pkg, int pid, int uid, in String[] autoGrantPermissions); void grantPermissionFromUser(in Uri uri, String pkg, String callingPkg, boolean allSlices); } diff --git a/core/java/android/app/slice/SliceManager.java b/core/java/android/app/slice/SliceManager.java index 26498e81253a..955093d3380e 100644 --- a/core/java/android/app/slice/SliceManager.java +++ b/core/java/android/app/slice/SliceManager.java @@ -430,7 +430,8 @@ public class SliceManager { */ public @PermissionResult int checkSlicePermission(@NonNull Uri uri, int pid, int uid) { try { - return mService.checkSlicePermission(uri, null, pid, uid, null); + return mService.checkSlicePermission(uri, mContext.getPackageName(), null, pid, uid, + null); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -487,7 +488,8 @@ public class SliceManager { if (pkg == null) { throw new SecurityException("No pkg specified"); } - int result = mService.checkSlicePermission(uri, pkg, pid, uid, autoGrantPermissions); + int result = mService.checkSlicePermission(uri, mContext.getPackageName(), pkg, pid, + uid, autoGrantPermissions); if (result == PERMISSION_DENIED) { throw new SecurityException("User " + uid + " does not have slice permission for " + uri + "."); diff --git a/services/autofill/java/com/android/server/autofill/RemoteFillService.java b/services/autofill/java/com/android/server/autofill/RemoteFillService.java index 65ad5960ea9c..ad80cc261bb3 100644 --- a/services/autofill/java/com/android/server/autofill/RemoteFillService.java +++ b/services/autofill/java/com/android/server/autofill/RemoteFillService.java @@ -123,8 +123,7 @@ final class RemoteFillService implements DeathRecipient { } public void destroy() { - mHandler.sendMessage(obtainMessage( - RemoteFillService::handleDestroy, this)); + mHandler.sendMessage(obtainMessage(RemoteFillService::handleDestroy, this)); } private void handleDestroy() { diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index 18255c5c39d4..8f59ca9c4b8d 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -839,7 +839,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // FillServiceCallbacks @Override public void onServiceDied(RemoteFillService service) { - // TODO(b/337565347): implement + Slog.w(TAG, "removing session because service died"); + forceRemoveSelfLocked(); } // AutoFillUiCallback diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index d06437e562ed..5878762e2272 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -2419,30 +2419,30 @@ class PackageManagerShellCommand extends ShellCommand { private int doWriteSplit(int sessionId, String inPath, long sizeBytes, String splitName, boolean logSuccess) throws RemoteException { - final PrintWriter pw = getOutPrintWriter(); - final ParcelFileDescriptor fd; - if (STDIN_PATH.equals(inPath)) { - fd = new ParcelFileDescriptor(getInFileDescriptor()); - } else if (inPath != null) { - fd = openFileForSystem(inPath, "r"); - if (fd == null) { - return -1; + PackageInstaller.Session session = null; + try { + final PrintWriter pw = getOutPrintWriter(); + final ParcelFileDescriptor fd; + if (STDIN_PATH.equals(inPath)) { + fd = ParcelFileDescriptor.dup(getInFileDescriptor()); + } else if (inPath != null) { + fd = openFileForSystem(inPath, "r"); + if (fd == null) { + return -1; + } + sizeBytes = fd.getStatSize(); + if (sizeBytes < 0) { + getErrPrintWriter().println("Unable to get size of: " + inPath); + return -1; + } + } else { + fd = ParcelFileDescriptor.dup(getInFileDescriptor()); } - sizeBytes = fd.getStatSize(); - if (sizeBytes < 0) { - getErrPrintWriter().println("Unable to get size of: " + inPath); - return -1; + if (sizeBytes <= 0) { + getErrPrintWriter().println("Error: must specify a APK size"); + return 1; } - } else { - fd = new ParcelFileDescriptor(getInFileDescriptor()); - } - if (sizeBytes <= 0) { - getErrPrintWriter().println("Error: must specify a APK size"); - return 1; - } - PackageInstaller.Session session = null; - try { session = new PackageInstaller.Session( mInterface.getPackageInstaller().openSession(sessionId)); session.write(splitName, 0, sizeBytes, fd); diff --git a/services/core/java/com/android/server/slice/SliceManagerService.java b/services/core/java/com/android/server/slice/SliceManagerService.java index ded2c1536bb8..73775b4387b9 100644 --- a/services/core/java/com/android/server/slice/SliceManagerService.java +++ b/services/core/java/com/android/server/slice/SliceManagerService.java @@ -219,12 +219,12 @@ public class SliceManagerService extends ISliceManager.Stub { } @Override - public int checkSlicePermission(Uri uri, String pkg, int pid, int uid, + public int checkSlicePermission(Uri uri, String callingPkg, String pkg, int pid, int uid, String[] autoGrantPermissions) { int userId = UserHandle.getUserId(uid); if (pkg == null) { for (String p : mContext.getPackageManager().getPackagesForUid(uid)) { - if (checkSlicePermission(uri, p, pid, uid, autoGrantPermissions) + if (checkSlicePermission(uri, callingPkg, p, pid, uid, autoGrantPermissions) == PERMISSION_GRANTED) { return PERMISSION_GRANTED; } @@ -237,9 +237,9 @@ public class SliceManagerService extends ISliceManager.Stub { if (mPermissions.hasPermission(pkg, userId, uri)) { return PackageManager.PERMISSION_GRANTED; } - if (autoGrantPermissions != null) { + if (autoGrantPermissions != null && callingPkg != null) { // Need to own the Uri to call in with permissions to grant. - enforceOwner(pkg, uri, userId); + enforceOwner(callingPkg, uri, userId); for (String perm : autoGrantPermissions) { if (mContext.checkPermission(perm, pid, uid) == PERMISSION_GRANTED) { int providerUser = ContentProvider.getUserIdFromUri(uri, userId); @@ -391,7 +391,7 @@ public class SliceManagerService extends ISliceManager.Stub { } protected int checkAccess(String pkg, Uri uri, int uid, int pid) { - return checkSlicePermission(uri, pkg, uid, pid, null); + return checkSlicePermission(uri, null, pkg, uid, pid, null); } private String getProviderPkg(Uri uri, int user) { diff --git a/services/print/java/com/android/server/print/RemotePrintSpooler.java b/services/print/java/com/android/server/print/RemotePrintSpooler.java index c1c32c28cb6b..774a3bc23e2b 100644 --- a/services/print/java/com/android/server/print/RemotePrintSpooler.java +++ b/services/print/java/com/android/server/print/RemotePrintSpooler.java @@ -708,8 +708,10 @@ final class RemotePrintSpooler { @Override public void onServiceDisconnected(ComponentName name) { synchronized (mLock) { - clearClientLocked(); - mRemoteInstance = null; + if (mRemoteInstance != null) { + clearClientLocked(); + mRemoteInstance = null; + } } } } diff --git a/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java index 1db89673d600..6d4f5f891dc1 100644 --- a/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/slice/SliceManagerServiceTest.java @@ -120,7 +120,8 @@ public class SliceManagerServiceTest extends UiServiceTestCase { .thenReturn(PERMISSION_DENIED); when(mContextSpy.checkPermission("perm2", Process.myPid(), Process.myUid())) .thenReturn(PERMISSION_GRANTED); - mService.checkSlicePermission(TEST_URI, mContext.getPackageName(), Process.myPid(), + mService.checkSlicePermission(TEST_URI, mContext.getPackageName(), + mContext.getPackageName(), Process.myPid(), Process.myUid(), testPerms); verify(mContextSpy).checkPermission(eq("perm1"), eq(Process.myPid()), eq(Process.myUid())); diff --git a/telecomm/java/android/telecom/CallRedirectionService.java b/telecomm/java/android/telecom/CallRedirectionService.java new file mode 100644 index 000000000000..9c874bf305b1 --- /dev/null +++ b/telecomm/java/android/telecom/CallRedirectionService.java @@ -0,0 +1,167 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package android.telecom; + +import android.annotation.SdkConstant; +import android.app.Service; +import android.content.Intent; +import android.net.Uri; +import android.os.Handler; +import android.os.IBinder; +import android.os.Looper; +import android.os.Message; +import android.os.RemoteException; + +import com.android.internal.os.SomeArgs; +import com.android.internal.telecom.ICallRedirectionService; +import com.android.internal.telecom.ICallRedirectionAdapter; + +/** + * This service can be implemented to interact between Telecom and its implementor + * for making outgoing call with optional redirection/cancellation purposes. + * + * <p> + * Below is an example manifest registration for a {@code CallRedirectionService}. + * <pre> + * {@code + * <service android:name="your.package.YourCallRedirectionServiceImplementation" + * android:permission="android.permission.BIND_REDIRECTION_SERVICE"> + * <intent-filter> + * <action android:name="android.telecom.CallRedirectionService"/> + * </intent-filter> + * </service> + * } + * </pre> + */ +public abstract class CallRedirectionService extends Service { + /** + * The {@link Intent} that must be declared as handled by the service. + */ + @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION) + public static final String SERVICE_INTERFACE = "android.telecom.CallRedirectionService"; + + /** + * An adapter to inform Telecom the response from the implementor of the Call + * Redirection service + */ + private ICallRedirectionAdapter mCallRedirectionAdapter; + + /** + * Telecom calls this method to inform the implemented {@link CallRedirectionService} of + * a new outgoing call which is being placed. + * @param handle the phone number dialed by the user + * @param targetPhoneAccount the {@link PhoneAccountHandle} on which the call will be placed. + */ + public abstract void onPlaceCall(Uri handle, PhoneAccountHandle targetPhoneAccount); + + /** + * The implemented {@link CallRedirectionService} calls this method to response a request + * received via {@link #onPlaceCall(Uri, PhoneAccountHandle)} to inform Telecom that no changes + * are required to the outgoing call, and that the call should be placed as-is. + */ + public final void placeCallUnmodified() { + try { + mCallRedirectionAdapter.placeCallUnmodified(); + } catch (RemoteException e) { + } + } + + /** + * The implemented {@link CallRedirectionService} calls this method to response a request + * received via {@link #onPlaceCall(Uri, PhoneAccountHandle)} to inform Telecom that changes + * are required to the phone number or/and {@link PhoneAccountHandle} for the outgoing call. + * @param handle the new phone number to dial + * @param targetPhoneAccount the {@link PhoneAccountHandle} to use when placing the call. + * If {@code null}, no change will be made to the + * {@link PhoneAccountHandle} used to place the call. + */ + public final void redirectCall(Uri handle, PhoneAccountHandle targetPhoneAccount) { + try { + mCallRedirectionAdapter.redirectCall(handle, targetPhoneAccount); + } catch (RemoteException e) { + } + } + + /** + * The implemented {@link CallRedirectionService} calls this method to response a request + * received via {@link #onPlaceCall(Uri, PhoneAccountHandle)} to inform Telecom that an outgoing + * call should be canceled entirely. + */ + public final void cancelCall() { + try { + mCallRedirectionAdapter.cancelCall(); + } catch (RemoteException e) { + } + } + + /** + * A handler message to process the attempt to place call with redirection service from Telecom + */ + private static final int MSG_PLACE_CALL = 1; + + /** + * A handler to process the attempt to place call with redirection service from Telecom + */ + private final Handler mHandler = new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_PLACE_CALL: + SomeArgs args = (SomeArgs) msg.obj; + try { + mCallRedirectionAdapter = (ICallRedirectionAdapter) args.arg1; + onPlaceCall((Uri) args.arg2, (PhoneAccountHandle) args.arg3); + } finally { + args.recycle(); + } + break; + } + } + }; + + private final class CallRedirectionBinder extends ICallRedirectionService.Stub { + + /** + * Telecom calls this method to inform the CallRedirectionService of a new outgoing call + * which is about to be placed. + * @param handle the phone number dialed by the user + * @param targetPhoneAccount the URI of the number the user dialed + */ + @Override + public void placeCall(ICallRedirectionAdapter adapter, Uri handle, + PhoneAccountHandle targetPhoneAccount) { + Log.v(this, "placeCall"); + SomeArgs args = SomeArgs.obtain(); + args.arg1 = adapter; + args.arg2 = handle; + args.arg3 = targetPhoneAccount; + mHandler.obtainMessage(MSG_PLACE_CALL, args).sendToTarget(); + } + } + + @Override + public IBinder onBind(Intent intent) { + Log.v(this, "onBind"); + return new CallRedirectionBinder(); + } + + @Override + public boolean onUnbind(Intent intent) { + Log.v(this, "onUnbind"); + return false; + } +} diff --git a/telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl b/telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl new file mode 100644 index 000000000000..46bf983f52a2 --- /dev/null +++ b/telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.telecom; + +import android.net.Uri; +import android.telecom.PhoneAccountHandle; + +/** + * Internal remote callback interface for call redirection services. + * + * @see android.telecom.CallRedirectionService + * + * {@hide} + */ +oneway interface ICallRedirectionAdapter { + void cancelCall(); + + void placeCallUnmodified(); + + void redirectCall(in Uri handle, in PhoneAccountHandle targetPhoneAccount); +} diff --git a/telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl b/telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl new file mode 100644 index 000000000000..d8d360beb64d --- /dev/null +++ b/telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.telecom; + +import android.net.Uri; +import android.telecom.PhoneAccountHandle; + +import com.android.internal.telecom.ICallRedirectionAdapter; + +/** + * Internal remote interface for a call redirection service. + * + * @see android.telecom.CallRedirectionService + * + * @hide + */ +oneway interface ICallRedirectionService { + void placeCall(in ICallRedirectionAdapter adapter, in Uri handle, + in PhoneAccountHandle targetPhoneAccount); +} diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index cabf444ade16..2a680447a86b 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -2012,6 +2012,15 @@ public class CarrierConfigManager { public static final String KEY_UNDELIVERED_SMS_MESSAGE_EXPIRATION_TIME = "undelivered_sms_message_expiration_time"; + /** + * Specifies a carrier-defined {@link CallRedirectionService} which Telecom will bind + * to for outgoing calls. An empty string indicates that no carrier-defined + * {@link CallRedirectionService} is specified. + * @hide + */ + public static final String KEY_CALL_REDIRECTION_SERVICE_COMPONENT_NAME_STRING = + "call_redirection_service_component_name_string"; + /** The default value for every variable. */ private final static PersistableBundle sDefaults; diff --git a/telephony/java/com/android/internal/telephony/ISmsBaseImpl.java b/telephony/java/com/android/internal/telephony/ISmsImplBase.java index cc1d105ae29e..1cdf44d897b2 100644 --- a/telephony/java/com/android/internal/telephony/ISmsBaseImpl.java +++ b/telephony/java/com/android/internal/telephony/ISmsImplBase.java @@ -1,4 +1,5 @@ -/* Copyright (C) 2018 The Android Open Source Project +/* + * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -11,17 +12,19 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * */ package com.android.internal.telephony; import android.app.PendingIntent; import android.net.Uri; -import java.lang.UnsupportedOperationException; + import java.util.List; -public class ISmsBaseImpl extends ISms.Stub { +/** + * Base class for ISms that facilitates forward compatibility with new features. + */ +public class ISmsImplBase extends ISms.Stub { @Override public List<SmsRawData> getAllMessagesFromIccEfForSubscriber(int subId, String callingPkg) { @@ -29,45 +32,42 @@ public class ISmsBaseImpl extends ISms.Stub { } @Override - public boolean updateMessageOnIccEfForSubscriber(int subId, String callingPkg, - int messageIndex, int newStatus, byte[] pdu) throws UnsupportedOperationException { + public boolean updateMessageOnIccEfForSubscriber(int subId, String callingPkg, int messageIndex, + int newStatus, byte[] pdu) { throw new UnsupportedOperationException(); } @Override public boolean copyMessageToIccEfForSubscriber(int subId, String callingPkg, int status, - byte[] pdu, byte[] smsc) throws UnsupportedOperationException { + byte[] pdu, byte[] smsc) { throw new UnsupportedOperationException(); } @Override public void sendDataForSubscriber(int subId, String callingPkg, String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, - PendingIntent deliveryIntent) throws UnsupportedOperationException { + PendingIntent deliveryIntent) { throw new UnsupportedOperationException(); } @Override public void sendDataForSubscriberWithSelfPermissions(int subId, String callingPkg, - String destAddr, String scAddr, int destPort, byte[] data, - PendingIntent sentIntent, PendingIntent deliveryIntent) - throws UnsupportedOperationException { + String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, + PendingIntent deliveryIntent) { throw new UnsupportedOperationException(); } @Override public void sendTextForSubscriber(int subId, String callingPkg, String destAddr, String scAddr, String text, PendingIntent sentIntent, - PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp) - throws UnsupportedOperationException { + PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp) { throw new UnsupportedOperationException(); } @Override public void sendTextForSubscriberWithSelfPermissions(int subId, String callingPkg, String destAddr, String scAddr, String text, PendingIntent sentIntent, - PendingIntent deliveryIntent, boolean persistMessage) - throws UnsupportedOperationException { + PendingIntent deliveryIntent, boolean persistMessage) { throw new UnsupportedOperationException(); } @@ -75,15 +75,13 @@ public class ISmsBaseImpl extends ISms.Stub { public void sendTextForSubscriberWithOptions(int subId, String callingPkg, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp, - int priority, boolean expectMore, int validityPeriod) - throws UnsupportedOperationException { + int priority, boolean expectMore, int validityPeriod) { throw new UnsupportedOperationException(); } @Override public void injectSmsPduForSubscriber( - int subId, byte[] pdu, String format, PendingIntent receivedIntent) - throws UnsupportedOperationException { + int subId, byte[] pdu, String format, PendingIntent receivedIntent) { throw new UnsupportedOperationException(); } @@ -91,8 +89,7 @@ public class ISmsBaseImpl extends ISms.Stub { public void sendMultipartTextForSubscriber(int subId, String callingPkg, String destinationAddress, String scAddress, List<String> parts, List<PendingIntent> sentIntents, - List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp) - throws UnsupportedOperationException { + List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp) { throw new UnsupportedOperationException(); } @@ -101,99 +98,94 @@ public class ISmsBaseImpl extends ISms.Stub { String destinationAddress, String scAddress, List<String> parts, List<PendingIntent> sentIntents, List<PendingIntent> deliveryIntents, boolean persistMessageForNonDefaultSmsApp, - int priority, boolean expectMore, int validityPeriod) - throws UnsupportedOperationException { + int priority, boolean expectMore, int validityPeriod) { throw new UnsupportedOperationException(); } @Override - public boolean enableCellBroadcastForSubscriber(int subId, int messageIdentifier, int ranType) - throws UnsupportedOperationException { + public boolean enableCellBroadcastForSubscriber(int subId, int messageIdentifier, int ranType) { throw new UnsupportedOperationException(); } @Override - public boolean disableCellBroadcastForSubscriber(int subId, int messageIdentifier, int ranType) - throws UnsupportedOperationException { + public boolean disableCellBroadcastForSubscriber(int subId, int messageIdentifier, + int ranType) { throw new UnsupportedOperationException(); } @Override public boolean enableCellBroadcastRangeForSubscriber(int subId, int startMessageId, - int endMessageId, int ranType) throws UnsupportedOperationException { + int endMessageId, int ranType) { throw new UnsupportedOperationException(); } @Override public boolean disableCellBroadcastRangeForSubscriber(int subId, int startMessageId, - int endMessageId, int ranType) throws UnsupportedOperationException { + int endMessageId, int ranType) { throw new UnsupportedOperationException(); } @Override - public int getPremiumSmsPermission(String packageName) throws UnsupportedOperationException { + public int getPremiumSmsPermission(String packageName) { throw new UnsupportedOperationException(); } @Override - public int getPremiumSmsPermissionForSubscriber(int subId, String packageName) - throws UnsupportedOperationException { + public int getPremiumSmsPermissionForSubscriber(int subId, String packageName) { throw new UnsupportedOperationException(); } @Override - public void setPremiumSmsPermission(String packageName, int permission) throws UnsupportedOperationException { + public void setPremiumSmsPermission(String packageName, int permission) { throw new UnsupportedOperationException(); } @Override public void setPremiumSmsPermissionForSubscriber(int subId, String packageName, - int permission) throws UnsupportedOperationException { + int permission) { throw new UnsupportedOperationException(); } @Override - public boolean isImsSmsSupportedForSubscriber(int subId) throws UnsupportedOperationException { + public boolean isImsSmsSupportedForSubscriber(int subId) { throw new UnsupportedOperationException(); } @Override - public boolean isSmsSimPickActivityNeeded(int subId) throws UnsupportedOperationException { + public boolean isSmsSimPickActivityNeeded(int subId) { throw new UnsupportedOperationException(); } @Override - public int getPreferredSmsSubscription() throws UnsupportedOperationException { + public int getPreferredSmsSubscription() { throw new UnsupportedOperationException(); } @Override - public String getImsSmsFormatForSubscriber(int subId) throws UnsupportedOperationException { + public String getImsSmsFormatForSubscriber(int subId) { throw new UnsupportedOperationException(); } @Override - public boolean isSMSPromptEnabled() throws UnsupportedOperationException { + public boolean isSMSPromptEnabled() { throw new UnsupportedOperationException(); } @Override public void sendStoredText(int subId, String callingPkg, Uri messageUri, String scAddress, - PendingIntent sentIntent, PendingIntent deliveryIntent) - throws UnsupportedOperationException { + PendingIntent sentIntent, PendingIntent deliveryIntent) { throw new UnsupportedOperationException(); } @Override public void sendStoredMultipartText(int subId, String callingPkg, Uri messageUri, - String scAddress, List<PendingIntent> sentIntents, - List<PendingIntent> deliveryIntents) throws UnsupportedOperationException { + String scAddress, List<PendingIntent> sentIntents, + List<PendingIntent> deliveryIntents) { throw new UnsupportedOperationException(); } @Override - public String createAppSpecificSmsToken(int subId, String callingPkg, PendingIntent intent) - throws UnsupportedOperationException { + public String createAppSpecificSmsToken(int subId, String callingPkg, PendingIntent intent) { throw new UnsupportedOperationException(); } } |