Remove RingtoneManager.*SyncFromParent APIs
These operations can be done already if the caller has WRITE_SECURE_SETTINGS_PERMISSION, and the only approved callers are settings apps which have that permission. We don't want anyone else to bypass the permission check and turn off parent sounds sync. Test: atest SettingsRoboTests Bug: 204555055 Change-Id: I47956428f5363affef29af9dbe3d3dde21c5a392
This commit is contained in:
@@ -268,8 +268,6 @@ interface IAudioService {
|
||||
|
||||
List<AudioPlaybackConfiguration> getActivePlaybackConfigurations();
|
||||
|
||||
void disableRingtoneSync(in int userId);
|
||||
|
||||
int getFocusRampTimeMs(in int focusGain, in AudioAttributes attr);
|
||||
|
||||
int dispatchFocusChange(in AudioFocusInfo afi, in int focusChange,
|
||||
|
||||
@@ -748,32 +748,6 @@ public class RingtoneManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables Settings.System.SYNC_PARENT_SOUNDS.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static void disableSyncFromParent(Context userContext) {
|
||||
IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE);
|
||||
IAudioService audioService = IAudioService.Stub.asInterface(b);
|
||||
try {
|
||||
audioService.disableRingtoneSync(userContext.getUserId());
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Unable to disable ringtone sync.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables Settings.System.SYNC_PARENT_SOUNDS for the content's user
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
|
||||
public static void enableSyncFromParent(Context userContext) {
|
||||
Settings.Secure.putIntForUser(userContext.getContentResolver(),
|
||||
Settings.Secure.SYNC_PARENT_SOUNDS, 1 /* true */, userContext.getUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current default sound's {@link Uri}. This will give the actual
|
||||
* sound {@link Uri}, instead of using this, most clients can use
|
||||
@@ -818,11 +792,6 @@ public class RingtoneManager {
|
||||
if (setting == null) return;
|
||||
|
||||
final ContentResolver resolver = context.getContentResolver();
|
||||
if (Settings.Secure.getIntForUser(resolver, Settings.Secure.SYNC_PARENT_SOUNDS, 0,
|
||||
context.getUserId()) == 1) {
|
||||
// Parent sound override is enabled. Disable it using the audio service.
|
||||
disableSyncFromParent(context);
|
||||
}
|
||||
if(!isInternalRingtoneUri(ringtoneUri)) {
|
||||
ringtoneUri = ContentProvider.maybeAddUserId(ringtoneUri, context.getUserId());
|
||||
}
|
||||
|
||||
@@ -10023,22 +10023,6 @@ public class AudioService extends IAudioService.Stub
|
||||
mRecordMonitor.releaseRecorder(riid);
|
||||
}
|
||||
|
||||
public void disableRingtoneSync(final int userId) {
|
||||
final int callingUserId = UserHandle.getCallingUserId();
|
||||
if (callingUserId != userId) {
|
||||
mContext.enforceCallingOrSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL,
|
||||
"disable sound settings syncing for another profile");
|
||||
}
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
// Disable the sync setting so the profile uses its own sound settings.
|
||||
Settings.Secure.putIntForUser(mContentResolver, Settings.Secure.SYNC_PARENT_SOUNDS,
|
||||
0 /* false */, userId);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
|
||||
//======================
|
||||
// Audio playback notification
|
||||
//======================
|
||||
|
||||
Reference in New Issue
Block a user