Skip to content

appwidget · 桌面小部件代理 ​

拦截 AppWidgetManager(桌面小部件)。把目标 App 注册小部件时的 callingUid/包名替换为虚拟身份,避免小部件注册到真实系统桌面时身份错乱。

拦截的服务 ​

Context.APPWIDGET_SERVICE,继承 BinderInvocationProxy。

关键行为 ​

主要做 callingUid / packageName 的参数改写,使小部件 ID 分配与虚拟 App 对应。VirtualXposed 不重实现 widget 服务,靠身份隔离。

拦截方法清单 ​

从源码 onBindMethods / @Inject 内部类提取的 MethodProxy 拦截点:

- allocateAppWidgetId
- bindAppWidgetId
- bindRemoteViewsService
- createAppWidgetConfigIntentSender
- deleteAllHosts
- deleteAppWidgetId
- deleteHost
- getAppWidgetIds
- getAppWidgetIdsForHost
- getAppWidgetInfo
- getAppWidgetOptions
- getAppWidgetViews
- getInstalledProvidersForProfile
- hasBindAppWidgetPermission
- isBoundWidgetPackage
- notifyAppWidgetViewDataChanged
- partiallyUpdateAppWidgetIds
- setBindAppWidgetPermission
- startListening
- stopListening
- unbindRemoteViewsService
- updateAppWidgetIds
- updateAppWidgetOptions
- updateAppWidgetProvider

拦截与转发流程 ​

基于 VirtualApp 与 epic,仅供学习研究。VirtualApp 禁止商用。