static class W extends IWindow.Stub {
private final WeakReference<ViewRoot> mViewRoot;
public W(ViewRoot viewRoot, Context context) {
mViewRoot = new WeakReference<ViewRoot>(viewRoot);
}
public void resized(int w, int h, Rect coveredInsets,
Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
final ViewRoot viewRoot = mViewRoot.get();
if (viewRoot != null) {
viewRoot.dispatchResized(w, h, coveredInsets,
visibleInsets, reportDraw, newConfig);
}
}
public void dispatchAppVisibility(boolean visible) {
final ViewRoot viewRoot = mViewRoot.get();
if (viewRoot != null) {
viewRoot.dispatchAppVisibility(visible);
}
}
public void dispatchGetNewSurface() {
final ViewRoot viewRoot = mViewRoot.get();
if (viewRoot != null) {
viewRoot.dispatchGetNewSurface();
}
}
public void windowFocusChanged(boolean hasFocus, boolean inTouchMode) {
final ViewRoot viewRoot = mViewRoot.get();
if (viewRoot != null) {
viewRoot.windowFocusChanged(hasFocus, inTouchMode);
}
}
private static int checkCallingPermission(String permission) {
if (!Process.supportsProcesses()) {
return PackageManager.PERMISSION_GRANTED;
}
try {
return ActivityManagerNative.getDefault().checkPermission(
permission, Binder.getCallingPid(), Binder.getCallingUid());
} catch (RemoteException e) {
return PackageManager.PERMISSION_DENIED;
}
}
public void executeCommand(String command, String parameters, ParcelFileDescriptor out) {
final ViewRoot viewRoot = mViewRoot.get();
if (viewRoot != null) {
final View view = viewRoot.mView;
if (view != null) {
if (checkCallingPermission(Manifest.permission.DUMP) !=
PackageM
[置顶] Android之基础建设之IWindow和IWindowSession
最新推荐文章于 2024-06-03 17:57:54 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)