You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android kiosk应用中如何自动关闭「检查充电器」系统弹窗?

临时解决联想平板充电弹窗的编程方案

针对你在Kiosk模式下遇到的「检查您的充电器连接」系统弹窗问题,这里提供几个临时编程解决方案,均为规避性质的workaround,根源问题仍需联系联想处理:

方案1:利用设备所有者权限禁用特定系统通知

由于你的应用处于Kiosk模式,通常已获取设备所有者权限,可以通过该权限禁用产生弹窗的系统应用通知:

  1. 先确认弹窗来源的系统包名(通常是com.android.systemui或联想自有电源管理包如com.lenovo.power)
  2. 使用DevicePolicyManager限制目标应用的通知权限:
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName adminComponent = new ComponentName(this, YourDeviceAdminReceiver.class);

// 禁用目标应用的所有通知
Bundle restrictions = new Bundle();
restrictions.putBoolean("no_notifications", true);
dpm.setApplicationRestrictions(adminComponent, "com.android.systemui", restrictions);

优点:无需额外权限,稳定可控;缺点:可能会屏蔽该应用的其他必要通知,需精准定位弹窗来源包。

方案2:通过辅助功能服务自动关闭弹窗

借助Android的AccessibilityService监听系统窗口变化,检测到目标弹窗后自动点击关闭按钮:

步骤1:注册辅助服务

在AndroidManifest.xml中添加服务声明:

<service
    android:name=".ChargerPopupAccessibilityService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/accessibility_config" />
</service>

步骤2:配置辅助服务参数

在res/xml/accessibility_config.xml中定义监听规则:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeWindowStateChanged"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:canPerformGestures="true"
    android:description="@string/accessibility_desc" />

步骤3:实现服务逻辑

public class ChargerPopupAccessibilityService extends AccessibilityService {
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        if (event.getEventType() != AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
            return;
        }

        AccessibilityNodeInfo rootNode = getRootInActiveWindow();
        if (rootNode == null) return;

        // 匹配弹窗标题文本
        List<AccessibilityNodeInfo> titleNodes = rootNode.findAccessibilityNodeInfosByText("检查您的充电器连接");
        if (titleNodes.isEmpty()) return;

        // 查找并点击关闭按钮(根据实际弹窗按钮文本调整,比如"确定")
        List<AccessibilityNodeInfo> closeNodes = rootNode.findAccessibilityNodeInfosByText("确定");
        for (AccessibilityNodeInfo node : closeNodes) {
            if (node.isEnabled() && node.isClickable()) {
                node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                break;
            }
        }
        rootNode.recycle();
    }

    @Override
    public void onInterrupt() {}
}

优点:无需Root,精准针对目标弹窗;缺点:需要用户在系统设置中手动开启辅助功能(Kiosk模式下可通过设备所有者权限强制开启),且需适配不同机型的弹窗按钮文本。

方案3:Root后修改系统属性(不推荐)

如果平板已获取Root权限,可以尝试修改系统充电检测相关的配置文件或sysfs节点,禁用该弹窗的触发逻辑。但此方法风险极高,不同联想机型的实现差异大,可能导致系统不稳定,仅作为极端情况下的备选。


内容的提问来源于stack exchange,提问作者sjohansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:55:18