|
@ -60,6 +60,9 @@ public class MainActivity extends AppCompatActivity { |
|
|
private KeepAliveManager keepAliveManager; // 保持活跃管理器 |
|
|
private KeepAliveManager keepAliveManager; // 保持活跃管理器 |
|
|
private AutoStartManager autoStartManager; // 自启动管理器 |
|
|
private AutoStartManager autoStartManager; // 自启动管理器 |
|
|
private Dialog currentDialog; // 用于跟踪当前显示的Dialog,防止WindowLeaked错误 |
|
|
private Dialog currentDialog; // 用于跟踪当前显示的Dialog,防止WindowLeaked错误 |
|
|
|
|
|
|
|
|
|
|
|
// 添加自动启动状态变量 |
|
|
|
|
|
private boolean isAutoStart = false; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
protected void onCreate(Bundle savedInstanceState) { |
|
|
protected void onCreate(Bundle savedInstanceState) { |
|
@ -132,7 +135,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
private void checkAutoStartStatus() { |
|
|
private void checkAutoStartStatus() { |
|
|
Intent intent = getIntent(); |
|
|
Intent intent = getIntent(); |
|
|
if (intent != null) { |
|
|
if (intent != null) { |
|
|
boolean isAutoStart = intent.getBooleanExtra("auto_start", false); |
|
|
|
|
|
|
|
|
isAutoStart = intent.getBooleanExtra("auto_start", false); |
|
|
if (isAutoStart) { |
|
|
if (isAutoStart) { |
|
|
String bootReason = intent.getStringExtra("boot_reason"); |
|
|
String bootReason = intent.getStringExtra("boot_reason"); |
|
|
String startSource = intent.getStringExtra("start_source"); |
|
|
String startSource = intent.getStringExtra("start_source"); |
|
@ -165,7 +168,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
*/ |
|
|
*/ |
|
|
private void checkAutoLogin() { |
|
|
private void checkAutoLogin() { |
|
|
if (loginDataManager.canAutoLogin()) { |
|
|
if (loginDataManager.canAutoLogin()) { |
|
|
android.util.Log.d("MainActivity", "检测到有效的本地登录数据,尝试自动登录"); |
|
|
|
|
|
|
|
|
android.util.Log.d("MainActivity", "检测到有效的本地登录数据,尝试自动登录, isAutoStart: " + isAutoStart); |
|
|
|
|
|
|
|
|
// 显示自动登录提示 |
|
|
// 显示自动登录提示 |
|
|
showToast("检测到登录信息,正在自动登录..."); |
|
|
showToast("检测到登录信息,正在自动登录..."); |
|
@ -177,7 +180,14 @@ public class MainActivity extends AppCompatActivity { |
|
|
// 检查Activity是否仍然有效 |
|
|
// 检查Activity是否仍然有效 |
|
|
if (!isFinishing() && !isDestroyed()) { |
|
|
if (!isFinishing() && !isDestroyed()) { |
|
|
if (loginDataManager.isLoggedIn()) { |
|
|
if (loginDataManager.isLoggedIn()) { |
|
|
|
|
|
android.util.Log.d("MainActivity", "自动登录成功!isAutoStart: " + isAutoStart); |
|
|
showToast("自动登录成功!"); |
|
|
showToast("自动登录成功!"); |
|
|
|
|
|
// isAutoStart = true; |
|
|
|
|
|
// 更新isAutoStart字段为true |
|
|
|
|
|
isAutoStart = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
showLoginSuccessDialog(loginDataManager.getLoginData()); |
|
|
showLoginSuccessDialog(loginDataManager.getLoginData()); |
|
|
} else { |
|
|
} else { |
|
|
android.util.Log.w("MainActivity", "自动登录失败,本地数据可能已失效"); |
|
|
android.util.Log.w("MainActivity", "自动登录失败,本地数据可能已失效"); |
|
@ -391,6 +401,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
* @param loginData 登录响应数据 |
|
|
* @param loginData 登录响应数据 |
|
|
*/ |
|
|
*/ |
|
|
private void showLoginSuccessDialog(PadApiService.PadLoginResponse loginData) { |
|
|
private void showLoginSuccessDialog(PadApiService.PadLoginResponse loginData) { |
|
|
|
|
|
android.util.Log.d("MainActivity", "显示登录成功弹框, isAutoStart: " + isAutoStart); |
|
|
|
|
|
|
|
|
// 创建自定义弹框 |
|
|
// 创建自定义弹框 |
|
|
Dialog dialog = new Dialog(this); |
|
|
Dialog dialog = new Dialog(this); |
|
|
currentDialog = dialog; // 保存Dialog引用以防止WindowLeaked错误 |
|
|
currentDialog = dialog; // 保存Dialog引用以防止WindowLeaked错误 |
|
@ -522,6 +534,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
* @param spinner 下拉框组件 |
|
|
* @param spinner 下拉框组件 |
|
|
*/ |
|
|
*/ |
|
|
private void loadPadList(Dialog dialog, Spinner spinner) { |
|
|
private void loadPadList(Dialog dialog, Spinner spinner) { |
|
|
|
|
|
android.util.Log.d("MainActivity", "开始加载Pad列表, isAutoStart: " + isAutoStart); |
|
|
|
|
|
|
|
|
// 首先设置默认的加载中选项 |
|
|
// 首先设置默认的加载中选项 |
|
|
String[] loadingItems = {"正在加载设备列表..."}; |
|
|
String[] loadingItems = {"正在加载设备列表..."}; |
|
|
ArrayAdapter<String> loadingAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, loadingItems); |
|
|
ArrayAdapter<String> loadingAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, loadingItems); |
|
@ -545,6 +559,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void onSuccess(PadApiService.PadListResponse data) { |
|
|
public void onSuccess(PadApiService.PadListResponse data) { |
|
|
|
|
|
android.util.Log.d("MainActivity", "Pad列表加载成功, isAutoStart: " + isAutoStart); |
|
|
|
|
|
|
|
|
// 加载成功,更新下拉框数据 |
|
|
// 加载成功,更新下拉框数据 |
|
|
java.util.List<PadApiService.PadInfo> padList = data.getPads(); // 使用getPads()而不是getPadList() |
|
|
java.util.List<PadApiService.PadInfo> padList = data.getPads(); // 使用getPads()而不是getPadList() |
|
|
|
|
|
|
|
@ -575,8 +591,21 @@ public class MainActivity extends AppCompatActivity { |
|
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
|
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
|
|
spinner.setAdapter(adapter); |
|
|
spinner.setAdapter(adapter); |
|
|
|
|
|
|
|
|
// 更新进入按钮的点击事件,传入真实的Pad数据 |
|
|
|
|
|
updateEnterButtonClickListener(dialog, padList); |
|
|
|
|
|
|
|
|
// 检查是否为自动登录且只有一个真实设备,如果是则自动选择 |
|
|
|
|
|
android.util.Log.d("MainActivity", "检查自动选择条件: isAutoStart=" + isAutoStart + |
|
|
|
|
|
", padList.size()=" + (padList != null ? padList.size() : 0) + |
|
|
|
|
|
", padList=" + (padList != null ? padList.toString() : "null")); |
|
|
|
|
|
|
|
|
|
|
|
if (isAutoStart && padList != null && padList.size() == 1) { |
|
|
|
|
|
// 清除padNames.add("请选择设备"); |
|
|
|
|
|
android.util.Log.d("MainActivity", "满足自动选择条件,开始自动选择设备"); |
|
|
|
|
|
// 自动选择唯一设备(忽略"请选择设备"这类提示项) |
|
|
|
|
|
autoSelectSingleDevice(dialog, padList.get(0)); |
|
|
|
|
|
} else { |
|
|
|
|
|
android.util.Log.d("MainActivity", "不满足自动选择条件,显示设备选择界面"); |
|
|
|
|
|
// 更新进入按钮的点击事件,传入真实的Pad数据 |
|
|
|
|
|
updateEnterButtonClickListener(dialog, padList); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -610,6 +639,27 @@ public class MainActivity extends AppCompatActivity { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
|
|
|
* 自动选择唯一设备并进入使用 |
|
|
|
|
|
* @param dialog 弹框实例 |
|
|
|
|
|
* @param padInfo 唯一的Pad信息 |
|
|
|
|
|
*/ |
|
|
|
|
|
private void autoSelectSingleDevice(Dialog dialog, PadApiService.PadInfo padInfo) { |
|
|
|
|
|
android.util.Log.d("MainActivity", "自动登录且只有一个设备,自动选择设备: " + padInfo.getHardwareName()); |
|
|
|
|
|
showToast("自动选择设备: " + padInfo.getHardwareName()); |
|
|
|
|
|
|
|
|
|
|
|
// 获取进入按钮并设置为加载状态 |
|
|
|
|
|
View buttonEnter = dialog.findViewById(R.id.buttonEnter); |
|
|
|
|
|
if (buttonEnter != null) { |
|
|
|
|
|
buttonEnter.setEnabled(false); |
|
|
|
|
|
TextView buttonText = (TextView) buttonEnter; |
|
|
|
|
|
buttonText.setText("正在进入..."); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 直接调用选择Pad并进入的方法 |
|
|
|
|
|
selectPadAndEnter(dialog, buttonEnter, padInfo); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
* 更新进入按钮的点击事件 |
|
|
* 更新进入按钮的点击事件 |
|
|
* @param dialog 弹框实例 |
|
|
* @param dialog 弹框实例 |
|
|
* @param padList Pad列表数据 |
|
|
* @param padList Pad列表数据 |
|
|