测试
This commit is contained in:
159
app/src/main/java/com/hikoncont/KeepAliveLauncherActivity.kt
Normal file
159
app/src/main/java/com/hikoncont/KeepAliveLauncherActivity.kt
Normal file
@@ -0,0 +1,159 @@
|
||||
package com.hikoncont
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.util.Log
|
||||
|
||||
/**
|
||||
* 保活启动器Activity - 借鉴反编译项目的OpenActivity实现
|
||||
* 主要职责:
|
||||
* 1. 启动指定的应用包
|
||||
* 2. 保活服务启动
|
||||
* 3. 透明Activity管理
|
||||
*/
|
||||
class KeepAliveLauncherActivity : Activity() {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "KeepAliveLauncher"
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
Log.i(TAG, "🚀 保活启动器Activity创建")
|
||||
|
||||
try {
|
||||
// 启动保活服务
|
||||
startKeepAliveServices()
|
||||
|
||||
// 处理启动请求
|
||||
handleLaunchRequest()
|
||||
|
||||
// 延迟关闭Activity
|
||||
scheduleFinish()
|
||||
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ 保活启动器Activity初始化失败", e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动保活服务
|
||||
*/
|
||||
private fun startKeepAliveServices() {
|
||||
try {
|
||||
Log.i(TAG, "🛡️ 启动保活服务")
|
||||
|
||||
// 只记录日志,不重复启动综合保活管理器
|
||||
Log.i(TAG, "✅ 保活服务启动完成")
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ 启动保活服务失败", e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理启动请求
|
||||
*/
|
||||
private fun handleLaunchRequest() {
|
||||
try {
|
||||
val intent = intent
|
||||
val targetPackage = intent.getStringExtra("target_package")
|
||||
val launchMain = intent.getBooleanExtra("launch_main", false)
|
||||
|
||||
when {
|
||||
!targetPackage.isNullOrEmpty() -> {
|
||||
// 启动指定应用(伪装保活)
|
||||
launchTargetApp(targetPackage)
|
||||
}
|
||||
launchMain -> {
|
||||
// 启动主Activity
|
||||
launchMainActivity()
|
||||
}
|
||||
else -> {
|
||||
// 默认启动主Activity
|
||||
launchMainActivity()
|
||||
}
|
||||
}
|
||||
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ 处理启动请求失败", e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动目标应用
|
||||
*/
|
||||
private fun launchTargetApp(packageName: String) {
|
||||
try {
|
||||
Log.i(TAG, "🎯 启动目标应用: $packageName")
|
||||
|
||||
val launchIntent = packageManager.getLaunchIntentForPackage(packageName)
|
||||
if (launchIntent != null) {
|
||||
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
||||
startActivity(launchIntent)
|
||||
Log.i(TAG, "✅ 目标应用启动成功")
|
||||
} else {
|
||||
Log.w(TAG, "⚠️ 无法启动目标应用: $packageName")
|
||||
// 启动主Activity作为备选
|
||||
launchMainActivity()
|
||||
}
|
||||
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ 启动目标应用失败", e)
|
||||
// 启动主Activity作为备选
|
||||
launchMainActivity()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动主Activity - 保活场景改为启动透明保活Activity
|
||||
*/
|
||||
private fun launchMainActivity() {
|
||||
try {
|
||||
Log.i(TAG, "🫥 保活场景,启动透明保活Activity(不启动MainActivity)")
|
||||
|
||||
// ✅ 修复:保活场景启动透明保活Activity,不启动MainActivity
|
||||
val transparentIntent = Intent(this, com.hikoncont.TransparentKeepAliveActivity::class.java).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) // 禁用动画,避免闪屏
|
||||
addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) // 从最近任务中排除
|
||||
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) // 单例模式,避免重复创建
|
||||
putExtra("from_keepalive", true)
|
||||
putExtra("keepalive_launch", true)
|
||||
putExtra("from_service", true)
|
||||
putExtra("from_keepalive_launcher", true)
|
||||
putExtra("timestamp", System.currentTimeMillis())
|
||||
}
|
||||
|
||||
startActivity(transparentIntent)
|
||||
Log.i(TAG, "✅ 透明保活Activity启动成功")
|
||||
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ 启动透明保活Activity失败", e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 安排Activity关闭
|
||||
*/
|
||||
private fun scheduleFinish() {
|
||||
try {
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
try {
|
||||
finish()
|
||||
Log.d(TAG, "✅ 保活启动器Activity已关闭")
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ 关闭Activity失败", e)
|
||||
}
|
||||
}, 100L) // 100ms后关闭
|
||||
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "❌ 安排Activity关闭失败", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user