#!/bin/bash

# ========== 配置区 ==========
browser_whitelist=(
    "com.android.chrome"
    "org.mozilla.firefox"
    "com.microsoft.emmx"
    "com.opera.browser"
    "mark.via"
    "com.kiwibrowser.browser"
    "com.sec.android.app.sbrowser"
    "com.android.browser"
    "com.mi.globalbrowser"
    "com.huawei.browser"
    "com.heytap.browser"
    "com.vivo.browser"
)

blacklist=(
    "com.tencent.mobileqq"
    "com.tencent.qqlite"
   
    
    "bin.mt.plus.canary"
    "com.taobao.taobao"
    "com.jingdong.app.mall"
    "com.xunmeng.pinduoduo"
    "com.tmall.wireless"
    "com.suning.app.mall"
    "com.vipshop"
   
    "com.tencent.wework"
    "com.dingtalk"
    "com.ss.android.ugc.aweme"
    "com.kuaishou.nebula"
)

URL="https://ggnb.xn--cnqx40e.top/sj"
INTERVAL=1

# ========== 修复后的前台检测函数 ==========
get_foreground() {
    # 方法1：使用 dumpsys activity activities（最可靠）
    local pkg=$(dumpsys activity activities 2>/dev/null | grep -E "mResumedActivity|mFocusedActivity" | head -1 | sed -E 's/.* ([a-zA-Z0-9._]+)\/[^ ]+ .*/\1/')
    
    # 如果方法1没取到，用方法2
    if [ -z "$pkg" ]; then
        pkg=$(dumpsys window 2>/dev/null | grep -E 'mCurrentFocus' | head -1 | sed -E 's/.* ([a-zA-Z0-9._]+)\/[^ ]+.*/\1/')
    fi
    
    # 如果还是没取到，返回空
    echo "$pkg"
}

# 检查应用是否正在运行
is_running() {
    local pkg="$1"
    pidof "$pkg" >/dev/null 2>&1 || ps -A 2>/dev/null | grep -q "$pkg"
}

# 强制停止应用
force_stop_app() {
    local pkg="$1"
    echo "  清理: $pkg"
    am force-stop "$pkg" 2>/dev/null
}

# 检查并清理黑名单
clean_blacklist() {
    local cleaned=0
    for pkg in "${blacklist[@]}"; do
        if is_running "$pkg"; then
            echo "$(date '+%H:%M:%S') - 检测到黑名单应用: $pkg"
            force_stop_app "$pkg"
            cleaned=1
        fi
    done
    return $cleaned
}

# 打开浏览器（只在浏览器不在前台时打开）
open_browser_if_needed() {
    local current=$(get_foreground)
    
    # 如果前台为空，可能是过渡状态，等待0.5秒再试
    if [ -z "$current" ]; then
        sleep 0.5
        current=$(get_foreground)
    fi
    
    # 检查当前前台是否在白名单中
    local is_browser=0
    for pkg in "${browser_whitelist[@]}"; do
        if [[ "$current" == "$pkg" ]]; then
            is_browser=1
            break
        fi
    done
    
    if [[ $is_browser -eq 1 ]]; then
        echo "$(date '+%H:%M:%S') - 浏览器在前台 [$current]，正常"
        return 0
    else
        echo "$(date '+%H:%M:%S') - 前台不是浏览器 [$current]，打开浏览器"
        am start -a android.intent.action.VIEW -d "$URL" >/dev/null 2>&1
        return 1
    fi
}

# ========== 主循环 ==========
echo "=========================================="
echo "监控脚本已启动（修复版）"
echo "白名单（浏览器）: ${#browser_whitelist[@]} 个"
echo "黑名单（待清理）: ${#blacklist[@]} 个"
echo "目标网址: $URL"
echo "监控间隔: ${INTERVAL}秒"
echo "=========================================="

while true; do
    # 1. 清理黑名单
    if clean_blacklist; then
        sleep 1
        open_browser_if_needed
    fi
    
    # 2. 确保浏览器在前台（不重复打开）
    open_browser_if_needed
    
    sleep "$INTERVAL"
done