71 lines
2.9 KiB
Java
71 lines
2.9 KiB
Java
|
package com.example.myapplication.Tool;
|
||
|
|
||
|
import android.app.Activity;
|
||
|
import android.content.ClipData;
|
||
|
import android.content.ClipboardManager;
|
||
|
import android.content.Context;
|
||
|
import android.graphics.Color;
|
||
|
import android.os.Handler;
|
||
|
import android.view.ViewGroup;
|
||
|
import android.widget.Button;
|
||
|
import android.widget.LinearLayout;
|
||
|
import android.widget.TextView;
|
||
|
import android.widget.Toast;
|
||
|
|
||
|
import androidx.appcompat.app.AlertDialog;
|
||
|
//测试时使用
|
||
|
public class ErrorDisplayUtil {
|
||
|
|
||
|
// 显示全量错误信息的对话框
|
||
|
public static void showErrorDialog(Activity activity, String title, String errorDetail) {
|
||
|
activity.runOnUiThread(() -> {
|
||
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||
|
builder.setTitle(title)
|
||
|
.setMessage(errorDetail)
|
||
|
.setPositiveButton("复制错误", (dialog, which) -> {
|
||
|
ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE);
|
||
|
ClipData clip = ClipData.newPlainText("错误详情", errorDetail);
|
||
|
clipboard.setPrimaryClip(clip);
|
||
|
Toast.makeText(activity, "已复制到剪贴板", Toast.LENGTH_SHORT).show();
|
||
|
})
|
||
|
.setNegativeButton("关闭", null)
|
||
|
.show();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// 在界面上固定位置显示错误面板(建议放在登录按钮下方)
|
||
|
public static void showErrorPanel(Activity activity, String errorType, String solution) {
|
||
|
activity.runOnUiThread(() -> {
|
||
|
ViewGroup rootView = activity.findViewById(android.R.id.content);
|
||
|
|
||
|
// 创建错误面板
|
||
|
LinearLayout errorPanel = new LinearLayout(activity);
|
||
|
errorPanel.setOrientation(LinearLayout.VERTICAL);
|
||
|
errorPanel.setBackgroundColor(0x22FF0000); // 半透明红色背景
|
||
|
errorPanel.setPadding(16, 16, 16, 16);
|
||
|
|
||
|
TextView errorView = new TextView(activity);
|
||
|
errorView.setTextColor(Color.RED);
|
||
|
errorView.setText("⚠️ 错误类型: " + errorType);
|
||
|
|
||
|
TextView solutionView = new TextView(activity);
|
||
|
solutionView.setTextColor(Color.BLACK);
|
||
|
solutionView.setText("💡 解决方案: " + solution);
|
||
|
|
||
|
Button detailBtn = new Button(activity);
|
||
|
detailBtn.setText("查看技术详情");
|
||
|
detailBtn.setOnClickListener(v -> showErrorDialog(activity, "技术详情", errorType + "\n\n" + solution));
|
||
|
|
||
|
errorPanel.addView(errorView);
|
||
|
errorPanel.addView(solutionView);
|
||
|
errorPanel.addView(detailBtn);
|
||
|
|
||
|
// 添加到界面底部
|
||
|
rootView.addView(errorPanel);
|
||
|
|
||
|
// 5秒后自动隐藏
|
||
|
new Handler().postDelayed(() -> rootView.removeView(errorPanel), 5000);
|
||
|
});
|
||
|
}
|
||
|
}
|