blob: 7370fc36c23ee93d6c37b09de43a9bd9348e3f1e [file] [log] [blame]
/*
* Copyright (C) 2020 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.app;
import android.app.ActivityManager;
import android.app.ICompatCameraControlCallback;
import android.app.IRequestFinishCallback;
import android.app.PictureInPictureParams;
import android.content.ComponentName;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.IRemoteCallback;
import android.os.PersistableBundle;
import android.view.RemoteAnimationDefinition;
import android.window.SizeConfigurationBuckets;
import com.android.internal.policy.IKeyguardDismissCallback;
/**
* Interface for the callback and request from an activity to system.
*
* {@hide}
*/
interface IActivityClientController {
oneway void activityIdle(in IBinder token, in Configuration config, in boolean stopProfiling);
oneway void activityResumed(in IBinder token, in boolean handleSplashScreenExit);
oneway void activityRefreshed(in IBinder token);
/**
* This call is not one-way because {@link #activityPaused()) is not one-way, or
* the top-resumed-lost could be reported after activity paused.
*/
void activityTopResumedStateLost();
/**
* Notifies that the activity has completed paused. This call is not one-way because it can make
* consecutive launch in the same process more coherent. About the order of binder call, it
* should be fine with other one-way calls because if pause hasn't completed on the server side,
* there won't be other lifecycle changes.
*/
void activityPaused(in IBinder token);
oneway void activityStopped(in IBinder token, in Bundle state,
in PersistableBundle persistentState, in CharSequence description);
oneway void activityDestroyed(in IBinder token);
oneway void activityLocalRelaunch(in IBinder token);
oneway void activityRelaunched(in IBinder token);
oneway void reportSizeConfigurations(in IBinder token,
in SizeConfigurationBuckets sizeConfigurations);
boolean moveActivityTaskToBack(in IBinder token, boolean nonRoot);
boolean shouldUpRecreateTask(in IBinder token, in String destAffinity);
boolean navigateUpTo(in IBinder token, in Intent target, in String resolvedType,
int resultCode, in Intent resultData);
boolean releaseActivityInstance(in IBinder token);
boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask);
boolean finishActivityAffinity(in IBinder token);
/** Finish all activities that were started for result from the specified activity. */
void finishSubActivity(in IBinder token, in String resultWho, int requestCode);
/**
* Indicates that when the activity finsihes, the result should be immediately sent to the
* originating activity. Must only be invoked during MediaProjection setup.
*/
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_MEDIA_PROJECTION)")
void setForceSendResultForMediaProjection(in IBinder token);
boolean isTopOfTask(in IBinder token);
boolean willActivityBeVisible(in IBinder token);
int getDisplayId(in IBinder activityToken);
int getTaskForActivity(in IBinder token, in boolean onlyRoot);
/**
* Returns the {@link Configuration} of the task which hosts the Activity, or {@code null} if
* the task {@link Configuration} cannot be obtained.
*/
Configuration getTaskConfiguration(in IBinder activityToken);
IBinder getActivityTokenBelow(IBinder token);
ComponentName getCallingActivity(in IBinder token);
String getCallingPackage(in IBinder token);
int getLaunchedFromUid(in IBinder token);
String getLaunchedFromPackage(in IBinder token);
void setRequestedOrientation(in IBinder token, int requestedOrientation);
int getRequestedOrientation(in IBinder token);
boolean convertFromTranslucent(in IBinder token);
boolean convertToTranslucent(in IBinder token, in Bundle options);
boolean isImmersive(in IBinder token);
void setImmersive(in IBinder token, boolean immersive);
boolean enterPictureInPictureMode(in IBinder token, in PictureInPictureParams params);
void setPictureInPictureParams(in IBinder token, in PictureInPictureParams params);
oneway void setShouldDockBigOverlays(in IBinder token, in boolean shouldDockBigOverlays);
void toggleFreeformWindowingMode(in IBinder token);
oneway void requestMultiwindowFullscreen(in IBinder token, in int request,
in IRemoteCallback callback);
oneway void startLockTaskModeByToken(in IBinder token);
oneway void stopLockTaskModeByToken(in IBinder token);
oneway void showLockTaskEscapeMessage(in IBinder token);
void setTaskDescription(in IBinder token, in ActivityManager.TaskDescription values);
boolean showAssistFromActivity(in IBinder token, in Bundle args);
boolean isRootVoiceInteraction(in IBinder token);
void startLocalVoiceInteraction(in IBinder token, in Bundle options);
void stopLocalVoiceInteraction(in IBinder token);
oneway void setShowWhenLocked(in IBinder token, boolean showWhenLocked);
oneway void setInheritShowWhenLocked(in IBinder token, boolean setInheritShownWhenLocked);
oneway void setTurnScreenOn(in IBinder token, boolean turnScreenOn);
oneway void setAllowCrossUidActivitySwitchFromBelow(in IBinder token, boolean allowed);
oneway void reportActivityFullyDrawn(in IBinder token, boolean restoredFromBundle);
oneway void overrideActivityTransition(IBinder token, boolean open, int enterAnim, int exitAnim,
int backgroundColor);
oneway void clearOverrideActivityTransition(IBinder token, boolean open);
/**
* Overrides the animation of activity pending transition. This call is not one-way because
* the method is usually used after startActivity or Activity#finish. If this is non-blocking,
* the calling activity may proceed to complete pause and become stopping state, which will
* cause the request to be ignored. Besides, startActivity and Activity#finish are blocking
* calls, so this method should be the same as them to keep the invocation order.
*/
void overridePendingTransition(in IBinder token, in String packageName,
int enterAnim, int exitAnim, int backgroundColor);
int setVrMode(in IBinder token, boolean enabled, in ComponentName packageName);
/** See {@link android.app.Activity#setRecentsScreenshotEnabled}. */
oneway void setRecentsScreenshotEnabled(in IBinder token, boolean enabled);
/**
* It should only be called from home activity to remove its outdated snapshot. The home
* snapshot is used to speed up entering home from screen off. If the content of home activity
* is significantly different from before taking the snapshot, then the home activity can use
* this method to avoid inconsistent transition.
*/
void invalidateHomeTaskSnapshot(IBinder homeToken);
void dismissKeyguard(in IBinder token, in IKeyguardDismissCallback callback,
in CharSequence message);
/** Registers remote animations for a specific activity. */
void registerRemoteAnimations(in IBinder token, in RemoteAnimationDefinition definition);
/** Unregisters all remote animations for a specific activity. */
void unregisterRemoteAnimations(in IBinder token);
/**
* Reports that an Activity received a back key press.
*/
oneway void onBackPressed(in IBinder activityToken,
in IRequestFinishCallback callback);
/** Reports that the splash screen view has attached to activity. */
oneway void splashScreenAttached(in IBinder token);
/**
* Shows or hides a Camera app compat toggle for stretched issues with the requested state.
*
* @param token The token for the window that needs a control.
* @param showControl Whether the control should be shown or hidden.
* @param transformationApplied Whether the treatment is already applied.
* @param callback The callback executed when the user clicks on a control.
*/
oneway void requestCompatCameraControl(in IBinder token, boolean showControl,
boolean transformationApplied, in ICompatCameraControlCallback callback);
/**
* If set, any activity launch in the same task will be overridden to the locale of activity
* that started the task.
*/
void enableTaskLocaleOverride(in IBinder token);
/**
* Return {@code true} if the activity was explicitly requested to be launched in the
* TaskFragment.
*
* @param activityToken The token of the Activity.
* @param taskFragmentToken The token of the TaskFragment.
*/
boolean isRequestedToLaunchInTaskFragment(in IBinder activityToken,
in IBinder taskFragmentToken);
/**
* Enable or disable ActivityRecordInputSink to block input events.
*
* @param token The token for the activity that requests to toggle.
* @param enabled Whether the input evens are blocked by ActivityRecordInputSink.
*/
@JavaPassthrough(annotation = "@android.annotation.RequiresPermission(android.Manifest"
+ ".permission.INTERNAL_SYSTEM_WINDOW)")
oneway void setActivityRecordInputSinkEnabled(in IBinder activityToken, boolean enabled);
}