From e552c6d3fc39fd1dbdfb1db7b6cb9161bfce6cc8 Mon Sep 17 00:00:00 2001
From: huangwei <983142558@qq.com>
Date: Tue, 13 Aug 2024 11:46:44 +0800
Subject: [PATCH] =?UTF-8?q?[=E5=86=9B=E6=B5=8B]=20=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 5 +-
.../controlnetwork/activity/MainActivity.java | 266 ------------------
.../activity/ViewRecentCrashActivity.java | 62 ++++
.../newui/configfragment/ConfigFragment.kt | 10 +-
.../newui/mefragment/MeFragment.kt | 9 +-
.../util/CrashCollectUtils.java | 101 +++++++
.../util/SelectDeviceTypeUtil.java | 21 +-
.../layout/activity_view_recent_crash_log.xml | 21 ++
.../main/res/layout/new_fragment_config.xml | 34 ++-
app/src/main/res/layout/new_fragment_me.xml | 37 +++
.../res/mipmap-xxhdpi/ic_level_connect.png | Bin 0 -> 1694 bytes
11 files changed, 289 insertions(+), 277 deletions(-)
create mode 100644 app/src/main/java/com/bingce/controlnetwork/activity/ViewRecentCrashActivity.java
create mode 100644 app/src/main/java/com/bingce/controlnetwork/util/CrashCollectUtils.java
create mode 100644 app/src/main/res/layout/activity_view_recent_crash_log.xml
create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_level_connect.png
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14c79cf..b141559 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -211,7 +211,10 @@
android:name=".func.level.idetection.LevelIDetectionStationSettingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="i角检测" />
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/bingce/controlnetwork/activity/MainActivity.java b/app/src/main/java/com/bingce/controlnetwork/activity/MainActivity.java
index d737b88..cb808e4 100644
--- a/app/src/main/java/com/bingce/controlnetwork/activity/MainActivity.java
+++ b/app/src/main/java/com/bingce/controlnetwork/activity/MainActivity.java
@@ -5,7 +5,6 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Color;
-import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
@@ -44,12 +43,10 @@ import com.bingce.controlnetwork.activity.backup.launch.BackupImportHelper;
import com.bingce.controlnetwork.activity.user.LoginActivity;
import com.bingce.controlnetwork.activity.user.RegisterActivity;
import com.bingce.controlnetwork.activity.user.UserInfoActivity;
-import com.bingce.controlnetwork.bean.MainUserBean;
import com.bingce.controlnetwork.fragment.MainSurveyFragment;
import com.bingce.controlnetwork.fragment.ProjectListFragment;
import com.bingce.controlnetwork.newui.configfragment.ConfigFragment;
import com.bingce.controlnetwork.newui.mefragment.MeFragment;
-import com.bingce.controlnetwork.util.CheckControlUpdateUtil;
import com.bingce.controlnetwork.viewmodel.MainActivityViewModel;
import com.bingce.data.sync.GlobalFlowCenter;
import com.bingce.data.sync.utils.LeanCloudConfigLoader;
@@ -63,21 +60,15 @@ import com.bingce.surveyor.agentweb.AgentWebActivity;
import com.bingce.totalstation.TotalStation;
import com.bingce.ui.TabEntity;
import com.bingce.utils.ColorUtil;
-import com.bingce.utils.CrashCollector;
import com.bingce.utils.DateUtils;
-import com.bingce.utils.LCDeviceUtil;
import com.bingce.utils.SdkUtils;
import com.bingce.utils.ServiceDateUtils;
import com.bingce.utils.SoundPoolUtil;
-import com.bingce.utils.StringUtil;
-import com.bingce.utils.ThreadPoolUtil;
-import com.bingce.utils.Util;
import com.bingce.utils.VipManager;
import com.daimajia.numberprogressbar.NumberProgressBar;
import com.flyco.tablayout.CommonTabLayout;
import com.flyco.tablayout.listener.CustomTabEntity;
import com.flyco.tablayout.listener.OnTabSelectListener;
-import com.jkyeo.splashview.SplashView;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.material_design_iconic_typeface_library.MaterialDesignIconic;
import com.tencent.mm.opensdk.openapi.IWXAPI;
@@ -98,11 +89,9 @@ import java.util.List;
import blankj.utilcode.util.ActivityUtils;
import blankj.utilcode.util.ServiceUtils;
-import blankj.utilcode.util.StringUtils;
import blankj.utilcode.util.ToastUtils;
import blankj.utilcode.util.Utils;
import cn.leancloud.LCException;
-import cn.leancloud.LCFile;
import cn.leancloud.LCObject;
import cn.leancloud.LCQuery;
import cn.leancloud.LCUser;
@@ -163,19 +152,6 @@ public class MainActivity extends BaseMainActivity implements Device.IDeviceConn
}
});
}
-
- updateHeaderResult();
-
- LCDeviceUtil.updateDeviceInfo("controlnetwork", ((App) Utils.getApp()).registerCodeV2, null);
-
- checkAgreementPermission();
-
- //解决某个版本的bug:
- //由于升级数据库,导致限差方案丢失,所以启动的时候检测所有project,为没有限差的项目重新添加限差
-// DatabaseFixUtils.changeDefaultTolerance();
- //尝试上传crashLog
- ThreadPoolUtil.execute(() -> CrashCollector.tryUploadCrashLogInWorkerThread(this, CrashCollector.APP_LABEL_CONTROL));
- LeanCloudConfigLoader.loadLeanCloudConfig();
}
/**
@@ -475,14 +451,6 @@ public class MainActivity extends BaseMainActivity implements Device.IDeviceConn
//如果是从其他Activity返回到MainActivity时,不显示广告,如果是从后台切换出来,检查并显示广告;
//一定放到super.onResume前,否则TopActivity始终是MainActivity,因为App的onActivityResumed在super.onResume内执行
- if (((App) Utils.getApp()).isUserStatusChanged) {
- ((App) Utils.getApp()).isUserStatusChanged = false;
-// if (drawerLeft != null)
-// drawerLeft.openDrawer();
-// if (accountHeader != null)
-// accountHeader.toggleSelectionList(MainActivity.this);
- updateHeaderResult();
- }
//按照设置选项,保持屏幕常亮,放在onResume而不放在onCreate里是因为,用户更改设置后返回主页就要开始常亮了
boolean isWakeLock = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_is_wake_lock", false);
if (isWakeLock) {
@@ -693,240 +661,6 @@ public class MainActivity extends BaseMainActivity implements Device.IDeviceConn
}
}
- /**
- * 教程列表
- */
- public void showTutorialListDialog() {
- new MaterialDialog.Builder(this)
- .title(R.string.video_tutorial)
- .items(new String[]{getString(R.string.bilibili)
- , getString(R.string.tencent_video)
- , getString(R.string.baidudisk)
- , getString(R.string.surveyor_home)})
- .itemsCallback(new MaterialDialog.ListCallback() {
- @Override
- public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
- switch (which) {
- case 0:
-// Intent intent1 = new Intent();
-// intent1.setClass(Utils.getApp(), AgentWebActivity.class);
-// intent1.putExtra("short_url", "android_url_bilibili_tutorial");
-// startActivity(intent1);
- AgentWebActivity.navigation2(
- MainActivity.this, "android_url_bilibili_tutorial"
- );
- break;
- case 1:
-// Intent intent2 = new Intent();
-// intent2.setClass(Utils.getApp(), AgentWebActivity.class);
-// intent2.putExtra("short_url", "android_url_tencent_video_tutorial");
-// startActivity(intent2);
- AgentWebActivity.navigation2(
- MainActivity.this, "android_url_tencent_video_tutorial"
- );
- break;
- case 2:
-// Intent intent3 = new Intent();
-// intent3.setClass(Utils.getApp(), AgentWebActivity.class);
-// intent3.putExtra("short_url", "android_url_baidu_pan_tutorial");
-// startActivity(intent3);
- AgentWebActivity.navigation2(
- MainActivity.this, "android_url_baidu_pan_tutorial"
- );
- break;
- case 3:
-// Intent intent4 = new Intent();
-// intent4.setClass(Utils.getApp(), AgentWebActivity.class);
-// intent4.putExtra("short_url", "android_url_surveyor_home");
-// startActivity(intent4);
- AgentWebActivity.navigation2(
- MainActivity.this, "android_url_surveyor_home"
- );
- break;
- }
- }
- }).show();
- }
-
- /**
- * 刷新左侧用户信息
- */
- public void updateHeaderResult() {
- Log.d("updateHeaderResult", "updateHeaderResult");
-// if (drawerLeft == null || accountHeader == null)
-// return;
-// for (int i = accountHeader.getProfiles().size() - 1; i >= 0; i--) {
-// accountHeader.removeProfile(accountHeader.getProfiles().get(i));
-// }
-
-// if (LCUser.getCurrentUser() == null || !LCUser.getCurrentUser().isAuthenticated()) {
-// accountHeader.addProfiles(
-// new ProfileSettingDrawerItem().withName(getString(R.string.log_in))
-// .withIcon(new IconicsDrawable(this).icon(MaterialDesignIconic.Icon.gmi_sign_in).paddingDp(5))
-// .withIdentifier(1000).withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
-// @Override
-// public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
-// Intent intent = new Intent(Utils.getApp(), LoginActivity.class);
-// intent.putExtra("finishTo", UserInfoActivity.class.getName());
-// startActivity(intent);
-// return false;
-// }
-// }));
-// } else {
-// accountHeader.addProfiles(new ProfileSettingDrawerItem().withName(getString(R.string.user_info)).withIcon(new IconicsDrawable(this).icon(MaterialDesignIconic.Icon.gmi_account).paddingDp(5)).withIdentifier(1000).withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
-// @Override
-// public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
-// startActivity(new Intent(MainActivity.this, UserInfoActivity.class));
-// return false;
-// }
-// }));
-// }
-
-
- updateProfileItem();
- }
-
- private void updateProfileItem() {
- if (LCUser.getCurrentUser() != null) {
- String nickname = LCUser.getCurrentUser().getString("nickname");
- LCFile avatarFile = LCUser.getCurrentUser().getLCFile("avatar");
- if (!StringUtils.isEmpty(nickname)) {
-// ProfileDrawerItem item = new ProfileDrawerItem().withName(nickname).withEmail(LCUser.getCurrentUser().getUsername()).withIdentifier(1003);
-// if (avatarFile == null) {
-// item.withIcon(R.drawable.app_logo);
-// } else {
-// item.withIcon(avatarFile.getUrl());
-// }
-// accountHeader.addProfiles(item);
-
- String avatarUrl = null;
- if (avatarFile != null) {
- avatarUrl = avatarFile.getUrl();
- }
-
- mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
- new MainUserBean(LCUser.getCurrentUser().getUsername(),
- nickname, avatarUrl));
- } else {
- LCObject userProfile = LCUser.getCurrentUser().getLCObject("profile");
- if (userProfile != null) {
- userProfile.fetchInBackground().subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(LCObject avObject) {
- if (isFinishing()) return;
- String nickname = avObject.getString("nickname");
- LCFile avatarFile = avObject.getLCFile("avatar");
- if (!StringUtils.isEmpty(nickname)) {
-// ProfileDrawerItem item = new ProfileDrawerItem().withName(nickname).withEmail(LCUser.getCurrentUser().getUsername()).withIdentifier(1003);
-// if (avatarFile == null) {
-// item.withIcon(R.drawable.app_logo);
-// } else {
-// item.withIcon(avatarFile.getUrl());
-// }
-// accountHeader.addProfiles(item);
-
- //保存到_User,下次不再查Profile
- LCUser.getCurrentUser().put("nickname", nickname);
-
- String avatarUrl = null;
- if (avatarFile != null) {
- LCUser.getCurrentUser().put("avatar", avatarFile);
- avatarUrl = avatarFile.getUrl();
- }
- LCUser.getCurrentUser().saveInBackground().subscribe();
-
-
- mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
- new MainUserBean(LCUser.getCurrentUser().getUsername(),
- nickname, avatarUrl));
- }
- }
-
- @Override
- public void onError(Throwable e) {
- }
-
- @Override
- public void onComplete() {
-
- }
- });
- } else {
- new LCQuery<>("Profile")
- .whereEqualTo("creatorId", LCUser.getCurrentUser().getObjectId())
- .findInBackground()
- .subscribe(new Observer>() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(List list) {
- if (isFinishing()) return;
- if (list != null && !list.isEmpty()) {
- String nickname = list.get(0).getString("nickname");
- LCFile avatarFile = list.get(0).getLCFile("avatar");
- if (!StringUtils.isEmpty(nickname)) {
-// ProfileDrawerItem item = new ProfileDrawerItem().withName(nickname).withEmail(LCUser.getCurrentUser().getUsername()).withIdentifier(1003);
-// if (avatarFile == null) {
-// item.withIcon(R.drawable.app_logo);
-// } else {
-// item.withIcon(avatarFile.getUrl());
-// }
-// accountHeader.addProfiles(item);
-
- String avatarUrl = null;
-
- //保存到_User,下次不再查Profile
- LCUser.getCurrentUser().put("nickname", nickname);
-
- if (avatarFile != null) {
- LCUser.getCurrentUser().put("avatar", avatarFile);
- avatarUrl = avatarFile.getUrl();
- }
- LCUser.getCurrentUser().saveInBackground().subscribe();
-
- mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
- new MainUserBean(LCUser.getCurrentUser().getUsername(),
- nickname, avatarUrl));
- }
- }
- }
-
- @Override
- public void onError(Throwable e) {
-
- }
-
- @Override
- public void onComplete() {
-
- }
- });
- }
- }
- } else {
-// accountHeader.addProfiles(new ProfileDrawerItem().withEmail(getString(R.string.click_avatar_to_log_in)).withIcon(R.drawable.app_logo).withIdentifier(1003));
- mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
- new MainUserBean(null,
- null, null));
- }
- }
-
- /**
- * 开启左侧菜单
- */
- public void openLeftDrawer() {
-// if (drawerLeft != null)
-// drawerLeft.openDrawer();
- }
-
@Override
public void onDeviceConnectLost() {
mainActivityUtils.onDeviceConnectLost();
diff --git a/app/src/main/java/com/bingce/controlnetwork/activity/ViewRecentCrashActivity.java b/app/src/main/java/com/bingce/controlnetwork/activity/ViewRecentCrashActivity.java
new file mode 100644
index 0000000..c36a53a
--- /dev/null
+++ b/app/src/main/java/com/bingce/controlnetwork/activity/ViewRecentCrashActivity.java
@@ -0,0 +1,62 @@
+package com.bingce.controlnetwork.activity;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.view.WindowManager;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+
+import com.bingce.controlnetwork.R;
+import com.bingce.controlnetwork.util.CrashCollectUtils;
+import com.bingce.utils.ThreadPoolUtil;
+
+import org.polaric.colorful.ColorfulActivity;
+
+public class ViewRecentCrashActivity extends ColorfulActivity {
+
+ @SuppressLint("SourceLockedOrientationActivity")
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_view_recent_crash_log);
+ Toolbar mToolbar = findViewById(R.id.toolbar);
+ setSupportActionBar(mToolbar);
+ if (getSupportActionBar() != null)
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ TextView textView = findViewById(R.id.tv_content);
+ if (textView != null) {
+ ThreadPoolUtil.execute(() -> {
+ CrashCollectUtils.collectCrashLogInWorkerThread((cloudTable, appLabelKey, fileNameKey, contentKey, uuidKey, crashContent) -> {
+ if (!TextUtils.isEmpty(crashContent)) {
+ runOnUiThread(() -> textView.setText(crashContent));
+ }
+ });
+ });
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ finish();
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ public static void start(Context context) {
+ Intent intent = new Intent(context, ViewRecentCrashActivity.class);
+ context.startActivity(intent);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/bingce/controlnetwork/newui/configfragment/ConfigFragment.kt b/app/src/main/java/com/bingce/controlnetwork/newui/configfragment/ConfigFragment.kt
index 0dda3df..24be276 100644
--- a/app/src/main/java/com/bingce/controlnetwork/newui/configfragment/ConfigFragment.kt
+++ b/app/src/main/java/com/bingce/controlnetwork/newui/configfragment/ConfigFragment.kt
@@ -30,10 +30,12 @@ class ConfigFragment : BaseFragmentBinding() {
//管理
mBinding.ilInstrumentManagement.iv.setImageResource(R.mipmap.icon_ts_connecting)
mBinding.ilInstrumentManagement.tv.setText(R.string.total_station_online)
+ mBinding.ilLevelConnect.iv.setImageResource(R.mipmap.ic_level_connect)
+ mBinding.ilLevelConnect.tv.text = "水准仪联机"
mBinding.ilPrismManagement.iv.setImageResource(R.mipmap.icon_prism_manager)
mBinding.ilPrismManagement.tv.setText(R.string.prism_manager)
mBinding.ilCustomTolerance.iv.setImageResource(R.mipmap.ic_tolerance_24)
- mBinding.ilCustomTolerance.tv.setText("自定义限差")
+ mBinding.ilCustomTolerance.tv.text = "自定义限差"
//三角导线联系测量
mBinding.ilExportMeasure.iv.setImageResource(R.mipmap.ic_export)
mBinding.ilExportMeasure.tv.setText(R.string.export)
@@ -56,7 +58,11 @@ class ConfigFragment : BaseFragmentBinding() {
// val intent = Intent(activity, ConnectTSActivity::class.java)
// intent.putExtra("customChannel", AppChannel.customChannel)
// startActivity(intent)
- SelectDeviceTypeUtil.showDeviceTypeDialog()
+ SelectDeviceTypeUtil.connectTsActivity()
+ }
+ mBinding.ilLevelConnect.root.setOnClickListener {
+ //水准仪联机
+ SelectDeviceTypeUtil.connectLevelActivity()
}
mBinding.ilPrismManagement.root.setOnClickListener {
//棱镜管理
diff --git a/app/src/main/java/com/bingce/controlnetwork/newui/mefragment/MeFragment.kt b/app/src/main/java/com/bingce/controlnetwork/newui/mefragment/MeFragment.kt
index 9ec0a21..1971a05 100644
--- a/app/src/main/java/com/bingce/controlnetwork/newui/mefragment/MeFragment.kt
+++ b/app/src/main/java/com/bingce/controlnetwork/newui/mefragment/MeFragment.kt
@@ -15,6 +15,7 @@ import cn.leancloud.LCUser
import com.bingce.controlnetwork.R
import com.bingce.controlnetwork.activity.AboutActivity
import com.bingce.controlnetwork.activity.SettingsActivity
+import com.bingce.controlnetwork.activity.ViewRecentCrashActivity
import com.bingce.controlnetwork.activity.backup.BackupExportActivity
import com.bingce.controlnetwork.activity.backup.launch.BackupImportHelper
import com.bingce.controlnetwork.activity.user.LoginActivity
@@ -22,7 +23,6 @@ import com.bingce.controlnetwork.activity.user.UserInfoActivity
import com.bingce.controlnetwork.databinding.NewFragmentMeBinding
import com.bingce.controlnetwork.newui.base.BaseFragmentBinding
import com.bingce.controlnetwork.viewmodel.MainActivityViewModel
-import com.bingce.surveyor.agentweb.AgentWebActivity
import com.bumptech.glide.Glide
/**
@@ -84,6 +84,8 @@ class MeFragment : BaseFragmentBinding() {
}
mBinding.llAbout.setOnClickListener {
//关于
+ Log.d("hwhw", "ss" + 5 / 0)
+
startActivity(Intent(requireContext(), AboutActivity::class.java))
}
mBinding.llUser.setOnClickListener {
@@ -95,6 +97,11 @@ class MeFragment : BaseFragmentBinding() {
startActivity(intent)
}
}
+
+ mBinding.llViewException.setOnClickListener {
+ //查看异常
+ startActivity(Intent(requireContext(), ViewRecentCrashActivity::class.java))
+ }
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
diff --git a/app/src/main/java/com/bingce/controlnetwork/util/CrashCollectUtils.java b/app/src/main/java/com/bingce/controlnetwork/util/CrashCollectUtils.java
new file mode 100644
index 0000000..e433601
--- /dev/null
+++ b/app/src/main/java/com/bingce/controlnetwork/util/CrashCollectUtils.java
@@ -0,0 +1,101 @@
+package com.bingce.controlnetwork.util;
+
+import android.content.Context;
+
+import com.bingce.utils.FileUtil;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import blankj.utilcode.util.FileUtils;
+import blankj.utilcode.util.Utils;
+
+public class CrashCollectUtils {
+ public static File crashLogFolder(Context context) {
+ File cacheFolder = context.getExternalCacheDir();
+ if (!cacheFolder.exists() || cacheFolder.isFile()) {
+ cacheFolder.mkdir();
+ }
+ File dir = new File(cacheFolder, "crash");
+ if (!dir.exists() || dir.isFile()) {
+ dir.mkdir();
+ }
+ return dir;
+ }
+
+ //收集崩溃日志,在处理完成后根据结果删除
+ public static void collectCrashLogInWorkerThread(ICrashLogCollectListener listener) {
+ File dir = crashLogFolder(Utils.getApp().getApplicationContext());
+ //读取其下面的数据
+ if (!dir.exists() || dir.isFile()) {
+ return;
+ }
+
+ StringBuilder sb = new StringBuilder();
+
+ File[] files = dir.listFiles();
+
+ if (files != null) {
+ List needMoveFileList = new ArrayList<>();
+ File lastFile = null;
+ for (File file : files) {
+ if (file == null || !file.isFile()) {
+ continue;
+ }
+
+ if (lastFile == null) {
+ lastFile = file;
+ } else {
+ if (file.lastModified() > lastFile.lastModified()) {
+ lastFile = file;
+ }
+ }
+
+ needMoveFileList.add(file);
+ }
+ needMoveFileList.remove(lastFile);
+
+ for (File file : needMoveFileList) {
+ moveToBackedUpFolder(dir, file);
+ }
+
+ if (lastFile != null) {
+ FileUtil.ReadFileResult readFileResult = FileUtil.readStringFrom(lastFile);
+ if (readFileResult.success) {
+ sb.append(readFileResult.string).append("\n");
+ }
+ }
+ }
+
+ String CRASH_LOG_TABLE = "CloudCrashLog";
+ final String contentKey = "crash_content";
+ final String fileNameKey = "file_name";
+ final String appLabelKey = "app";
+ final String uuidKey = "UUID";
+ listener.onCollected(CRASH_LOG_TABLE, appLabelKey, fileNameKey, contentKey, uuidKey, sb.toString());
+ }
+
+ private static void moveToBackedUpFolder(File dir, File targetLogFile) {
+ File repeatedFolder = new File(dir, "BACKED_UP");
+ if (!repeatedFolder.exists()) {
+ repeatedFolder.mkdirs();
+ }
+ FileUtils.move(targetLogFile, new File(repeatedFolder, targetLogFile.getName()));
+ }
+
+ public interface ICrashLogCollectListener {
+ void onCollected(String cloudTable, String appLabelKey, String fileNameKey, String contentKey, String uuidKey,
+ String content);
+ }
+
+ public static class CrashItem {
+ public final File file;
+ public final String content;
+
+ CrashItem(File file, String content) {
+ this.file = file;
+ this.content = content;
+ }
+ }
+}
diff --git a/app/src/main/java/com/bingce/controlnetwork/util/SelectDeviceTypeUtil.java b/app/src/main/java/com/bingce/controlnetwork/util/SelectDeviceTypeUtil.java
index 32cec2e..4dafc29 100644
--- a/app/src/main/java/com/bingce/controlnetwork/util/SelectDeviceTypeUtil.java
+++ b/app/src/main/java/com/bingce/controlnetwork/util/SelectDeviceTypeUtil.java
@@ -21,18 +21,27 @@ public class SelectDeviceTypeUtil {
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
switch (which) {
case 0:
- Intent intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class);
- intent.putExtra("customChannel", AppChannel.customChannel);
- ActivityUtils.getTopActivity().startActivity(intent);
+ connectTsActivity();
break;
case 1:
- Intent intent2 = new Intent(ActivityUtils.getTopActivity(), ConnectLevelActivity.class);
- intent2.putExtra("customChannel", AppChannel.customChannel);
- ActivityUtils.getTopActivity().startActivity(intent2);
+ connectLevelActivity();
break;
}
}
}).show();
}
+ public static void connectTsActivity() {
+ Intent intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class);
+ intent.putExtra("customChannel", AppChannel.customChannel);
+ ActivityUtils.getTopActivity().startActivity(intent);
+ }
+
+ public static void connectLevelActivity() {
+ Intent intent2 = new Intent(ActivityUtils.getTopActivity(), ConnectLevelActivity.class);
+ intent2.putExtra("customChannel", AppChannel.customChannel);
+ ActivityUtils.getTopActivity().startActivity(intent2);
+ }
+
+
}
diff --git a/app/src/main/res/layout/activity_view_recent_crash_log.xml b/app/src/main/res/layout/activity_view_recent_crash_log.xml
new file mode 100644
index 0000000..cde4dd2
--- /dev/null
+++ b/app/src/main/res/layout/activity_view_recent_crash_log.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/new_fragment_config.xml b/app/src/main/res/layout/new_fragment_config.xml
index efe1014..dd02c00 100644
--- a/app/src/main/res/layout/new_fragment_config.xml
+++ b/app/src/main/res/layout/new_fragment_config.xml
@@ -35,6 +35,14 @@
android:layout_height="wrap_content"
android:layout_weight="1" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_level_connect.png b/app/src/main/res/mipmap-xxhdpi/ic_level_connect.png
new file mode 100644
index 0000000000000000000000000000000000000000..02843897b275411b3061ab1e41acabb885a35dc3
GIT binary patch
literal 1694
zcmV;P24VS$P)%e&0-#Ek;~wDJ(+Awsfn9R-w{`7S>dL=Lbt!QROo)N1>R=juV44~zKt$p6>CND(nXw2-fyZ#22qpo$
z1G_Z%5s)$^QAG5)p4F2RHh!S$m(iv*SeG(!4pV*_GB
zP%1>CGMY=s1dJ|A2r$%ybaDsW$0
zI~svDqhX1#ZpP#opd3QTY1>1PN*Fi;E&&x>u~n`82DBj}ipBoIfDlW}21AV;N`V_c
zFm5Tj?}l7)L#lxSJu_NWAz@rw|M$zPe@i(|?LM_6?Q%=-H}6y1r52{9RXe|~MA&hG
zngpMK-0EntTV(?1i=|a_eoJR0q)z~PyQp=a8KO>YlcXe4+OG=rpep0wBamC=L67n_
zkw7*CEGhZzP(pP71a@?Tw#~xvOvEisfvGnGaO0Yy(NAQEPom$8tqb?DHYllfXst74ItP^{qRU^=q=RQ^
z`w6nqbOS}FdVKpUBB9pBeDM>ne=C
ztXNX9_ooRb4aQhZLJ@(BBn=OEGBGoXZYrqoYnZr
zvs)eL6@{qrfTV*}=?OI^!$Mbi9|a=pBum0&1`qhWGgb~P5y&T58gwvhT?qJZ?!jwV
zM4)mx+-5r={G4QY2|+7a9W?<{4FYmTOoH5k4u{|hHhr!)%vCO2-vAwoLIlNCF0`IF
zNQ)gaok&PoD5=l)ZrX%E1Ud*+V`{68iPWW2>_^Syg4N~Jet>5+j~9W4vMk$v1V^7|
z`_a^-pH&A5u;90nfkq)SxvQo1-c8SbS~b*CSuQRr_bVi?TOh_w!`KJK+^$py+H&Qs
zRYMJG)GuK=8FyWvh*^V{A`U&dxIR!tJ0oo>-q(oCf-2eap07*qoM6N<$f}d0fumAu6
literal 0
HcmV?d00001