diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
index d295c7c..df0e4da 100644
--- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
@@ -7,6 +7,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.os.Environment;
import android.text.TextPaint;
import com.casic.dcms.base.BaseApplication;
@@ -16,6 +17,10 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
import rx.Emitter;
import rx.Observable;
@@ -77,9 +82,22 @@
bitmapHeight - paddingBottom, textPaint);
//将带有水印的图片保存
- File file = FileUtils.getWaterImageFile();
+ File waterImageDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "WaterImage");
+ if (!waterImageDir.exists()) {
+ waterImageDir.mkdir();
+ }
+ String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
+ //index用来区分for循环太快会导致多想图片覆盖压缩问题
+ File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png");
+ if (!imageFile.exists()) {
+ try {
+ imageFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
try {
- FileOutputStream fos = new FileOutputStream(file);
+ FileOutputStream fos = new FileOutputStream(imageFile);
//以jpeg的编码方式,75%的像素质量保存为png图片
copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);
fos.flush();
@@ -90,7 +108,7 @@
} catch (Exception e) {
e.printStackTrace();
}
- emitter.onNext(file);
+ emitter.onNext(imageFile);
}, Emitter.BackpressureMode.BUFFER).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
@Override
public void onCompleted() {
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
index d295c7c..df0e4da 100644
--- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
@@ -7,6 +7,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.os.Environment;
import android.text.TextPaint;
import com.casic.dcms.base.BaseApplication;
@@ -16,6 +17,10 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
import rx.Emitter;
import rx.Observable;
@@ -77,9 +82,22 @@
bitmapHeight - paddingBottom, textPaint);
//将带有水印的图片保存
- File file = FileUtils.getWaterImageFile();
+ File waterImageDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "WaterImage");
+ if (!waterImageDir.exists()) {
+ waterImageDir.mkdir();
+ }
+ String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
+ //index用来区分for循环太快会导致多想图片覆盖压缩问题
+ File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png");
+ if (!imageFile.exists()) {
+ try {
+ imageFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
try {
- FileOutputStream fos = new FileOutputStream(file);
+ FileOutputStream fos = new FileOutputStream(imageFile);
//以jpeg的编码方式,75%的像素质量保存为png图片
copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);
fos.flush();
@@ -90,7 +108,7 @@
} catch (Exception e) {
e.printStackTrace();
}
- emitter.onNext(file);
+ emitter.onNext(imageFile);
}, Emitter.BackpressureMode.BUFFER).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
@Override
public void onCompleted() {
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 43412f8..18d7ed4 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -45,7 +45,7 @@
public static final String LAST_LOGIN = "lastLoginTime";
public static final String IP_KEY = "ip";
public static final String TOILET_LAYER_ID = "toiletLayerId";
-
+ public static final String APP_AUTHORITY = "com.casic.dcms.fileprovider";
public static final String BRIDGE_LIST = "projectBridges";
public static final long HALF_YEAR = 180 * 60 * 60 * 24 * 1000L;
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
index d295c7c..df0e4da 100644
--- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
@@ -7,6 +7,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.os.Environment;
import android.text.TextPaint;
import com.casic.dcms.base.BaseApplication;
@@ -16,6 +17,10 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
import rx.Emitter;
import rx.Observable;
@@ -77,9 +82,22 @@
bitmapHeight - paddingBottom, textPaint);
//将带有水印的图片保存
- File file = FileUtils.getWaterImageFile();
+ File waterImageDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "WaterImage");
+ if (!waterImageDir.exists()) {
+ waterImageDir.mkdir();
+ }
+ String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
+ //index用来区分for循环太快会导致多想图片覆盖压缩问题
+ File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png");
+ if (!imageFile.exists()) {
+ try {
+ imageFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
try {
- FileOutputStream fos = new FileOutputStream(file);
+ FileOutputStream fos = new FileOutputStream(imageFile);
//以jpeg的编码方式,75%的像素质量保存为png图片
copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);
fos.flush();
@@ -90,7 +108,7 @@
} catch (Exception e) {
e.printStackTrace();
}
- emitter.onNext(file);
+ emitter.onNext(imageFile);
}, Emitter.BackpressureMode.BUFFER).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
@Override
public void onCompleted() {
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 43412f8..18d7ed4 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -45,7 +45,7 @@
public static final String LAST_LOGIN = "lastLoginTime";
public static final String IP_KEY = "ip";
public static final String TOILET_LAYER_ID = "toiletLayerId";
-
+ public static final String APP_AUTHORITY = "com.casic.dcms.fileprovider";
public static final String BRIDGE_LIST = "projectBridges";
public static final long HALF_YEAR = 180 * 60 * 60 * 24 * 1000L;
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
deleted file mode 100644
index a0329b5..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class CompressVideoFileProvider extends FileProvider {
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
index d295c7c..df0e4da 100644
--- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
@@ -7,6 +7,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.os.Environment;
import android.text.TextPaint;
import com.casic.dcms.base.BaseApplication;
@@ -16,6 +17,10 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
import rx.Emitter;
import rx.Observable;
@@ -77,9 +82,22 @@
bitmapHeight - paddingBottom, textPaint);
//将带有水印的图片保存
- File file = FileUtils.getWaterImageFile();
+ File waterImageDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "WaterImage");
+ if (!waterImageDir.exists()) {
+ waterImageDir.mkdir();
+ }
+ String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
+ //index用来区分for循环太快会导致多想图片覆盖压缩问题
+ File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png");
+ if (!imageFile.exists()) {
+ try {
+ imageFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
try {
- FileOutputStream fos = new FileOutputStream(file);
+ FileOutputStream fos = new FileOutputStream(imageFile);
//以jpeg的编码方式,75%的像素质量保存为png图片
copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);
fos.flush();
@@ -90,7 +108,7 @@
} catch (Exception e) {
e.printStackTrace();
}
- emitter.onNext(file);
+ emitter.onNext(imageFile);
}, Emitter.BackpressureMode.BUFFER).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
@Override
public void onCompleted() {
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 43412f8..18d7ed4 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -45,7 +45,7 @@
public static final String LAST_LOGIN = "lastLoginTime";
public static final String IP_KEY = "ip";
public static final String TOILET_LAYER_ID = "toiletLayerId";
-
+ public static final String APP_AUTHORITY = "com.casic.dcms.fileprovider";
public static final String BRIDGE_LIST = "projectBridges";
public static final long HALF_YEAR = 180 * 60 * 60 * 24 * 1000L;
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
deleted file mode 100644
index a0329b5..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class CompressVideoFileProvider extends FileProvider {
-}
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
deleted file mode 100644
index 7f2aa50..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class VersionUpgradeFileProvider extends FileProvider {
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
index d295c7c..df0e4da 100644
--- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
@@ -7,6 +7,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.os.Environment;
import android.text.TextPaint;
import com.casic.dcms.base.BaseApplication;
@@ -16,6 +17,10 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
import rx.Emitter;
import rx.Observable;
@@ -77,9 +82,22 @@
bitmapHeight - paddingBottom, textPaint);
//将带有水印的图片保存
- File file = FileUtils.getWaterImageFile();
+ File waterImageDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "WaterImage");
+ if (!waterImageDir.exists()) {
+ waterImageDir.mkdir();
+ }
+ String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
+ //index用来区分for循环太快会导致多想图片覆盖压缩问题
+ File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png");
+ if (!imageFile.exists()) {
+ try {
+ imageFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
try {
- FileOutputStream fos = new FileOutputStream(file);
+ FileOutputStream fos = new FileOutputStream(imageFile);
//以jpeg的编码方式,75%的像素质量保存为png图片
copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);
fos.flush();
@@ -90,7 +108,7 @@
} catch (Exception e) {
e.printStackTrace();
}
- emitter.onNext(file);
+ emitter.onNext(imageFile);
}, Emitter.BackpressureMode.BUFFER).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
@Override
public void onCompleted() {
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 43412f8..18d7ed4 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -45,7 +45,7 @@
public static final String LAST_LOGIN = "lastLoginTime";
public static final String IP_KEY = "ip";
public static final String TOILET_LAYER_ID = "toiletLayerId";
-
+ public static final String APP_AUTHORITY = "com.casic.dcms.fileprovider";
public static final String BRIDGE_LIST = "projectBridges";
public static final long HALF_YEAR = 180 * 60 * 60 * 24 * 1000L;
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
deleted file mode 100644
index a0329b5..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class CompressVideoFileProvider extends FileProvider {
-}
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
deleted file mode 100644
index 7f2aa50..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class VersionUpgradeFileProvider extends FileProvider {
-}
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java
deleted file mode 100644
index afa4fe2..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class WaterImageFileProvider extends FileProvider {
-}
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
index d295c7c..df0e4da 100644
--- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
@@ -7,6 +7,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.os.Environment;
import android.text.TextPaint;
import com.casic.dcms.base.BaseApplication;
@@ -16,6 +17,10 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
import rx.Emitter;
import rx.Observable;
@@ -77,9 +82,22 @@
bitmapHeight - paddingBottom, textPaint);
//将带有水印的图片保存
- File file = FileUtils.getWaterImageFile();
+ File waterImageDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "WaterImage");
+ if (!waterImageDir.exists()) {
+ waterImageDir.mkdir();
+ }
+ String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
+ //index用来区分for循环太快会导致多想图片覆盖压缩问题
+ File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png");
+ if (!imageFile.exists()) {
+ try {
+ imageFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
try {
- FileOutputStream fos = new FileOutputStream(file);
+ FileOutputStream fos = new FileOutputStream(imageFile);
//以jpeg的编码方式,75%的像素质量保存为png图片
copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);
fos.flush();
@@ -90,7 +108,7 @@
} catch (Exception e) {
e.printStackTrace();
}
- emitter.onNext(file);
+ emitter.onNext(imageFile);
}, Emitter.BackpressureMode.BUFFER).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
@Override
public void onCompleted() {
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 43412f8..18d7ed4 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -45,7 +45,7 @@
public static final String LAST_LOGIN = "lastLoginTime";
public static final String IP_KEY = "ip";
public static final String TOILET_LAYER_ID = "toiletLayerId";
-
+ public static final String APP_AUTHORITY = "com.casic.dcms.fileprovider";
public static final String BRIDGE_LIST = "projectBridges";
public static final long HALF_YEAR = 180 * 60 * 60 * 24 * 1000L;
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
deleted file mode 100644
index a0329b5..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class CompressVideoFileProvider extends FileProvider {
-}
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
deleted file mode 100644
index 7f2aa50..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class VersionUpgradeFileProvider extends FileProvider {
-}
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java
deleted file mode 100644
index afa4fe2..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class WaterImageFileProvider extends FileProvider {
-}
diff --git a/app/src/main/res/layout/fragment_notice.xml b/app/src/main/res/layout/fragment_notice.xml
index 6fa051e..f6fb875 100644
--- a/app/src/main/res/layout/fragment_notice.xml
+++ b/app/src/main/res/layout/fragment_notice.xml
@@ -11,31 +11,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"
+ android:scrollbars="vertical"
+ app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 830d79a..ebd14f7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -309,6 +309,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c78d07c..ef2ece3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,9 +44,8 @@
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
- android:usesCleartextTraffic="true"
- tools:targetApi="m">
+ android:theme="@style/Theme.CityAdministration"
+ android:usesCleartextTraffic="true">
@@ -90,7 +89,6 @@
-
@@ -114,43 +112,9 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/base/BaseApplication.java b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
index 1f7c1a3..d0ca1cf 100644
--- a/app/src/main/java/com/casic/dcms/base/BaseApplication.java
+++ b/app/src/main/java/com/casic/dcms/base/BaseApplication.java
@@ -27,7 +27,7 @@
instance = this;
QMUISwipeBackActivityManager.init(this);
SaveKeyValues.initSharedPreferences(this);
- FileUtils.initFileConfig(this);
+ FileUtils.init(this);
ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license));//去掉开发版水印
ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key));
//个推初始化
diff --git a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
index 637d8bb..d7314d0 100644
--- a/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/MinePageFragment.java
@@ -22,6 +22,7 @@
import com.casic.dcms.model.UserBean;
import com.casic.dcms.utils.AuthenticationHelper;
import com.casic.dcms.utils.DialogHelper;
+import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.ChangePasswordActivity;
import com.casic.dcms.view.HelpfulActivity;
@@ -63,9 +64,11 @@
//下载进度条
progressDialog = new ProgressDialog(requireContext());
+ progressDialog.setMessage("下载新版本中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgressDrawable(ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.bg_progress, null));
progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
}
@Override
@@ -126,12 +129,7 @@
@Override
public void onConfirmClick() {
//下载新版本
- progressDialog.setMessage("下载新版本中...");
progressDialog.show();
- if (progressDialog.getProgress() != 0) {
- progressDialog.setProgress(0);//防止下载到中途却卡住无法再进行下载
- return;
- }
downloadApk(downloadUrl);
}
@@ -237,7 +235,7 @@
Uri data;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
// 通过FileProvider创建一个content类型的Uri
- data = FileProvider.getUriForFile(requireContext(), "com.casic.dcms.install.fileProvider", apk);
+ data = FileProvider.getUriForFile(requireContext(), LocaleConstant.APP_AUTHORITY, apk);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
} else {
data = Uri.fromFile(apk);
diff --git a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
index 0dfdc60..35cff13 100644
--- a/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/fragment/NoticePageFragment.java
@@ -1,40 +1,24 @@
package com.casic.dcms.fragment;
-import android.os.CountDownTimer;
-import android.os.Handler;
-import android.os.Message;
import android.view.View;
-import androidx.annotation.NonNull;
-
import com.casic.dcms.R;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.databinding.FragmentNoticeBinding;
import com.casic.dcms.utils.DataBaseManager;
-import com.casic.dcms.utils.LocaleConstant;
import com.casic.dcms.utils.StringHelper;
import com.casic.dcms.view.CaseDetailActivity;
import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter;
import com.pengxh.androidx.lite.adapter.ViewHolder;
import com.pengxh.androidx.lite.base.AndroidxBaseFragment;
import com.pengxh.androidx.lite.hub.ContextHub;
-import com.pengxh.androidx.lite.utils.WeakReferenceHandler;
-import com.scwang.smartrefresh.layout.api.RefreshLayout;
-import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
-import java.util.ArrayList;
import java.util.List;
public class NoticePageFragment extends AndroidxBaseFragment {
private static final String TAG = "NoticePageFragment";
- public static WeakReferenceHandler weakReferenceHandler;
private NormalRecyclerAdapter adapter;
- private List dataBeans = new ArrayList<>();
- private int pageIndex = 0; // 本地数据库分页从0开始
- private boolean isRefresh = false;
- private boolean isLoadMore = false;
@Override
protected void setupTopBarLayout() {
@@ -43,7 +27,47 @@
@Override
protected void initData() {
- weakReferenceHandler = new WeakReferenceHandler(callback);
+ List dataBeans = DataBaseManager.getInstance().queryNoticeByUser(StringHelper.getUserBean().getId());
+ if (dataBeans.size() == 0) {
+ viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
+ } else {
+ viewBinding.emptyView.hide();
+ adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
+ @Override
+ public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
+ viewHolder.setText(R.id.dateView, item.getPushDate())
+ .setText(R.id.titleView, item.getTitle())
+ .setText(R.id.contentView, item.getContent());
+ if (item.getIsRead().equals("0")) {
+ viewHolder.setVisibility(R.id.readStateView, View.GONE);
+ } else {
+ viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
+ }
+
+ viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
+ dataBeans.remove(position);
+ adapter.notifyItemRemoved(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ })
+ .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String caseId = item.getCasePrimaryKey();
+ ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
+ //更改数据库里通知状态
+ DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
+ adapter.notifyItemChanged(position);
+ adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
+ }
+ });
+ }
+ };
+ viewBinding.noticeRecyclerView.setAdapter(adapter);
+ }
}
@Override
@@ -52,111 +76,7 @@
}
@Override
- public void onResume() {
- super.onResume();
- dataBeans = DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex);
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
-
- private final Handler.Callback callback = new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message msg) {
- if (msg.what == LocaleConstant.UPDATE_NOTICE_FRAGMENT) {
- if (dataBeans.size() == 0) {
- viewBinding.emptyView.show(false, "没有任何通知", null, null, null);
- } else {
- viewBinding.emptyView.hide();
- adapter = new NormalRecyclerAdapter(R.layout.item_notice_rv_l, dataBeans) {
- @Override
- public void convertView(ViewHolder viewHolder, int position, NoticeLocaleBean item) {
- viewHolder.setText(R.id.dateView, item.getPushDate())
- .setText(R.id.titleView, item.getTitle())
- .setText(R.id.contentView, item.getContent());
- if (item.getIsRead().equals("0")) {
- viewHolder.setVisibility(R.id.readStateView, View.GONE);
- } else {
- viewHolder.setVisibility(R.id.readStateView, View.VISIBLE);
- }
-
- viewHolder.setOnClickListener(R.id.deleteView, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DataBaseManager.getInstance().deleteNoticeByMessageId(item.getMessageId());
- dataBeans.remove(position);
- adapter.notifyItemRemoved(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- })
- .setOnClickListener(R.id.showDetailLayout, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String caseId = item.getCasePrimaryKey();
- ContextHub.navigatePageTo(requireContext(), CaseDetailActivity.class, caseId);
- //更改数据库里通知状态
- DataBaseManager.getInstance().updateNoticeByMessageId(item.getMessageId());
- adapter.notifyItemChanged(position);
- adapter.notifyItemRangeChanged(position, dataBeans.size() - position);
- }
- });
- }
- };
- viewBinding.noticeRecyclerView.setAdapter(adapter);
- }
- }
- return true;
- }
- };
-
- @Override
protected void initEvent() {
- viewBinding.noticeLayout.setOnRefreshListener(new OnRefreshListener() {
- @Override
- public void onRefresh(@NonNull RefreshLayout refreshLayout) {
- isRefresh = true;
- new CountDownTimer(1000, 500) {
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex = 0;
-
- adapter.setRefreshData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishRefresh();
- isRefresh = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
-
- viewBinding.noticeLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
- @Override
- public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
- isLoadMore = true;
- new CountDownTimer(1000, 500) {
-
- @Override
- public void onTick(long millisUntilFinished) {
-
- }
-
- @Override
- public void onFinish() {
- pageIndex++;
-
- adapter.setLoadMoreData(DataBaseManager.getInstance().queryNoticeByPage(StringHelper.getUserBean().getId(), pageIndex));
- refreshLayout.finishLoadMore();
- isLoadMore = false;
-
- weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
- }
- }.start();
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
index 57f0df8..33244a1 100644
--- a/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/DataBaseManager.java
@@ -4,7 +4,6 @@
import com.casic.dcms.bean.MapConfigBean;
import com.casic.dcms.bean.NoticeLocaleBean;
import com.casic.dcms.bean.ToiletListBean;
-import com.casic.dcms.fragment.NoticePageFragment;
import com.casic.dcms.greendao.MapConfigBeanDao;
import com.casic.dcms.greendao.NoticeLocaleBeanDao;
import com.casic.dcms.greendao.ToiletListBeanDao;
@@ -46,8 +45,6 @@
noticeBeanDao.save(noticeBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -58,13 +55,10 @@
).list().size();
}
- public List queryNoticeByPage(String userId, int offset) {
- return BaseApplication.getDaoSession()
- .queryBuilder(NoticeLocaleBean.class)
+ public List queryNoticeByUser(String userId) {
+ return noticeBeanDao.queryBuilder()
.where(NoticeLocaleBeanDao.Properties.UserId.eq(userId))
- .offset(offset * LocaleConstant.PAGE_LIMIT)
.orderDesc(NoticeLocaleBeanDao.Properties.PushDate)
- .limit(LocaleConstant.PAGE_LIMIT)
.list();
}
@@ -75,8 +69,6 @@
noticeBeanDao.deleteInTx(result);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
@@ -89,8 +81,6 @@
noticeBeanDao.update(noticeLocaleBean);
//角标设置
BadeHelper.setBadgeNum(BaseApplication.getInstance(), queryUnReadNotice());
- //更新消息界面
- NoticePageFragment.weakReferenceHandler.sendEmptyMessage(LocaleConstant.UPDATE_NOTICE_FRAGMENT);
//更新底部导航消息数量
MainActivity.weakReferenceHandler.sendEmptyMessage(LocaleConstant.MESSAGE_NUMBER);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
index 32a5ad3..356f182 100644
--- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java
+++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java
@@ -1,8 +1,7 @@
package com.casic.dcms.utils;
-import android.annotation.SuppressLint;
import android.content.Context;
-import android.util.Log;
+import android.os.Environment;
import java.io.File;
import java.io.IOException;
@@ -12,112 +11,12 @@
public class FileUtils {
private static final String TAG = "FileUtils";
- @SuppressLint("StaticFieldLeak")
- private static Context context;
- private static File imageDir;
- private static File waterImageDir;
- private static File videoDir;
- private static int index = 1;
+ private static String videoFilePath;
- public static void initFileConfig(Context context) {
- FileUtils.context = context;
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "initFileConfig: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "initFileConfig: 创建CompressImageFile文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
+ public static void init(Context context) {
+ File videoDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_MOVIES), "");
if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "initFileConfig: 创建CompressVideoFile文件夹");
- }
- }
- }
-
- public static String getImageCompressPath() {
- if (imageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getImageCompressPath: 创建Casic文件夹");
- }
- }
- imageDir = new File(parentDir, "CompressImageFile");
- if (!imageDir.exists()) {
- boolean mkImageDir = imageDir.mkdir();
- if (mkImageDir) {
- Log.d(TAG, "getImageCompressPath: 创建CompressImageFile文件夹");
- }
- }
- }
- return imageDir.toString();
- }
-
- static File getWaterImageFile() {
- //如果第一次初始化文件夹未创建成功,那就调用的时候再单独创建一次文件夹
- if (waterImageDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getWaterImageFile: 创建Casic文件夹");
- }
- }
- waterImageDir = new File(parentDir, "WaterImageFile");
- if (!waterImageDir.exists()) {
- boolean mkAudioDir = waterImageDir.mkdir();
- if (mkAudioDir) {
- Log.d(TAG, "getWaterImageFile: 创建WaterImageFile文件夹");
- }
- }
- }
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
- //index用来区分for循环太快会导致多想图片覆盖压缩问题
- File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + "_" + (index++) + ".png");
- if (!imageFile.exists()) {
- try {
- imageFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return imageFile;
- }
-
- public static String getOutputVideoFile() {
- if (videoDir == null) {
- File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic");
- if (!parentDir.exists()) {
- boolean mkdir = parentDir.mkdir();
- if (mkdir) {
- Log.d(TAG, "getOutputVideoFile: 创建Casic文件夹");
- }
- }
- videoDir = new File(parentDir, "CompressVideoFile");
- if (!videoDir.exists()) {
- boolean mkVideoDir = videoDir.mkdir();
- if (mkVideoDir) {
- Log.d(TAG, "getOutputVideoFile: 创建CompressVideoFile文件夹");
- }
- }
+ videoDir.mkdir();
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
File videoFile = new File(videoDir + File.separator + "VID_" + timeStamp + ".mp4");
@@ -128,6 +27,10 @@
e.printStackTrace();
}
}
- return videoFile.getPath();
+ videoFilePath = videoFile.getPath();
+ }
+
+ public static String getOutputVideoFile() {
+ return videoFilePath;
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
index d295c7c..df0e4da 100644
--- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java
@@ -7,6 +7,7 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.os.Environment;
import android.text.TextPaint;
import com.casic.dcms.base.BaseApplication;
@@ -16,6 +17,10 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
import rx.Emitter;
import rx.Observable;
@@ -77,9 +82,22 @@
bitmapHeight - paddingBottom, textPaint);
//将带有水印的图片保存
- File file = FileUtils.getWaterImageFile();
+ File waterImageDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "WaterImage");
+ if (!waterImageDir.exists()) {
+ waterImageDir.mkdir();
+ }
+ String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA).format(new Date());
+ //index用来区分for循环太快会导致多想图片覆盖压缩问题
+ File imageFile = new File(waterImageDir + File.separator + "IMG_" + timeStamp + ".png");
+ if (!imageFile.exists()) {
+ try {
+ imageFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
try {
- FileOutputStream fos = new FileOutputStream(file);
+ FileOutputStream fos = new FileOutputStream(imageFile);
//以jpeg的编码方式,75%的像素质量保存为png图片
copyBitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);
fos.flush();
@@ -90,7 +108,7 @@
} catch (Exception e) {
e.printStackTrace();
}
- emitter.onNext(file);
+ emitter.onNext(imageFile);
}, Emitter.BackpressureMode.BUFFER).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
@Override
public void onCompleted() {
diff --git a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
index 43412f8..18d7ed4 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocaleConstant.java
@@ -45,7 +45,7 @@
public static final String LAST_LOGIN = "lastLoginTime";
public static final String IP_KEY = "ip";
public static final String TOILET_LAYER_ID = "toiletLayerId";
-
+ public static final String APP_AUTHORITY = "com.casic.dcms.fileprovider";
public static final String BRIDGE_LIST = "projectBridges";
public static final long HALF_YEAR = 180 * 60 * 60 * 24 * 1000L;
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
deleted file mode 100644
index a0329b5..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/CompressVideoFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class CompressVideoFileProvider extends FileProvider {
-}
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
deleted file mode 100644
index 7f2aa50..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/VersionUpgradeFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class VersionUpgradeFileProvider extends FileProvider {
-}
diff --git a/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java b/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java
deleted file mode 100644
index afa4fe2..0000000
--- a/app/src/main/java/com/casic/dcms/utils/provider/WaterImageFileProvider.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.casic.dcms.utils.provider;
-
-import androidx.core.content.FileProvider;
-
-public class WaterImageFileProvider extends FileProvider {
-}
diff --git a/app/src/main/res/layout/fragment_notice.xml b/app/src/main/res/layout/fragment_notice.xml
index 6fa051e..f6fb875 100644
--- a/app/src/main/res/layout/fragment_notice.xml
+++ b/app/src/main/res/layout/fragment_notice.xml
@@ -11,31 +11,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"
+ android:scrollbars="vertical"
+ app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 064f301..5443e7a 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,5 +1,21 @@
+
+