diff --git a/app/build.gradle b/app/build.gradle
index 836e483..773486d 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,4 +1,5 @@
apply plugin: 'com.android.application'
+apply plugin: 'org.jetbrains.kotlin.android'
android {
compileSdkVersion 33
@@ -15,6 +16,9 @@ android {
resValue "string", "authorities", applicationId
resourceConfigurations += ['zh', 'en', 'hdpi']
}
+ buildFeatures {
+ viewBinding = true
+ }
signingConfigs {
release {
keyAlias 'key0'
@@ -53,8 +57,8 @@ android {
}
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
}
namespace 'com.rehome.sgbaxj'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f22f0a1..5b66494 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,20 +4,19 @@
-
+ android:required="true" />
-
-
-
-
-
+
@@ -50,6 +49,7 @@
+
@@ -57,14 +57,13 @@
android:name="android.hardware.telephony"
android:required="false" />
-
-
+
-
+ tools:replace="android:allowBackup"
+ tools:targetApi="s">
+
-
-
-
+ android:screenOrientation="portrait"/>
+ android:name=".activity.CustomDialogActivity"
+ android:theme="@android:style/Theme.Dialog" />
-
-
+
@@ -331,8 +329,8 @@
android:value="1280" />
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/activity/LoginActivity.java b/app/src/main/java/com/rehome/sgbaxj/activity/LoginActivity.java
index fd4a0de..34f784b 100755
--- a/app/src/main/java/com/rehome/sgbaxj/activity/LoginActivity.java
+++ b/app/src/main/java/com/rehome/sgbaxj/activity/LoginActivity.java
@@ -189,7 +189,6 @@ public class LoginActivity extends BaseActivity {
private void OnlineLogin() {
String json = getPhoneInfo();
- Log.i("app", Contans.IP + Contans.LOGIN);
Request request = NoHttp.createStringRequest(Contans.IP + Contans.LOGIN, RequestMethod.POST);
// SSLSocketFactory socketFactory = NohttpUtils.getSSLSocketFactory(context);
// if(socketFactory!=null){
@@ -366,7 +365,7 @@ public class LoginActivity extends BaseActivity {
private void DownloadAndInstall(String downloadURL, String versionName, String description, String versionCode) {
new DownloadManager.Builder(this)
.apkUrl(downloadURL)
- .apkName("中粤能源点巡检.apk")
+ .apkName("韶关电厂保安巡检.apk")
.smallIcon(R.mipmap.logo1)
.showNewerToast(true)
.apkVersionCode(Integer.parseInt(versionCode))
diff --git a/app/src/main/java/com/rehome/sgbaxj/activity/MainActivity.java b/app/src/main/java/com/rehome/sgbaxj/activity/MainActivity.java
index 44d7cb8..f75f77b 100644
--- a/app/src/main/java/com/rehome/sgbaxj/activity/MainActivity.java
+++ b/app/src/main/java/com/rehome/sgbaxj/activity/MainActivity.java
@@ -28,6 +28,7 @@ import com.azhon.appupdate.listener.OnDownloadListener;
import com.azhon.appupdate.manager.DownloadManager;
import com.rehome.sgbaxj.R;
import com.rehome.sgbaxj.activity.regular.RegularActivity;
+import com.rehome.sgbaxj.activity.sbxj.BamjActivity;
import com.rehome.sgbaxj.activity.sbxj.XscbglActivity;
import com.rehome.sgbaxj.adapter.GridViewAdapter;
import com.rehome.sgbaxj.base.BaseActivity3;
@@ -40,6 +41,7 @@ import com.rehome.sgbaxj.service.MQTTPushService;
import com.rehome.sgbaxj.utils.AppManager;
import com.rehome.sgbaxj.utils.FlashUtil;
import com.rehome.sgbaxj.utils.HttpUtils;
+import com.rehome.sgbaxj.utils.NetworkUtil;
import com.rehome.sgbaxj.utils.SPUtils;
import com.rehome.sgbaxj.utils.StatusBarUtil;
import com.rehome.sgbaxj.weight.AuditDialog;
@@ -166,6 +168,9 @@ public class MainActivity extends BaseActivity3 {
str.add("保安巡检");
imageId.add(R.mipmap.icon8);
colors.add(R.drawable.radius_e2);
+ str.add("保安免检管理");
+ imageId.add(R.mipmap.icon3);
+ colors.add(R.drawable.radius_b1);
}
}
@@ -297,7 +302,17 @@ public class MainActivity extends BaseActivity3 {
}else if(iconText.equals("手电筒")){
checkPermission();
}else if(iconText.equals("Q4工单")){
-
+ showLog("Q4工单");
+ }else if (iconText.equals("保安免检管理")) {
+ if (NetworkUtil.hasNetWorkStatus(context, true)) {
+ Log.i("app", "有wifi网络");
+ Intent intentTemp = new Intent(context, BamjActivity.class);
+ intentTemp.putExtra("type", "BA");
+ startActivity(intentTemp);
+ } else {
+ Log.i("app", "无网络");
+ showToast("没有连接到wifi,当前功能需要依赖网络环境,请检查网络连接");
+ }
}
}
});
@@ -433,7 +448,7 @@ public class MainActivity extends BaseActivity3 {
private void DownloadAndInstall(String downloadURL, String versionName, String description, String versionCode) {
new DownloadManager.Builder(this)
.apkUrl(downloadURL)
- .apkName("中粤能源点巡检.apk")
+ .apkName("韶关电厂保安巡检.apk")
.smallIcon(R.mipmap.logo1)
.showNewerToast(true)
.apkVersionCode(Integer.parseInt(versionCode))
diff --git a/app/src/main/java/com/rehome/sgbaxj/activity/sbxj/BamjActivity.kt b/app/src/main/java/com/rehome/sgbaxj/activity/sbxj/BamjActivity.kt
new file mode 100644
index 0000000..db73e1c
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/activity/sbxj/BamjActivity.kt
@@ -0,0 +1,211 @@
+package com.rehome.sgbaxj.activity.sbxj
+
+import android.text.TextUtils
+import android.util.Log
+import android.view.View
+import android.widget.CheckBox
+import android.widget.TextView
+import com.rehome.sgbaxj.R
+import com.rehome.sgbaxj.adapter.BamjAdapter
+import com.rehome.sgbaxj.base.BaseActivityOaToolbarViewBinding
+import com.rehome.sgbaxj.bean.MjList
+import com.rehome.sgbaxj.bean.MjRequestInfo
+import com.rehome.sgbaxj.bean.XsRequestInfo
+import com.rehome.sgbaxj.contans.Contans
+import com.rehome.sgbaxj.databinding.ActivityBamjBinding
+import com.rehome.sgbaxj.utils.GsonUtils
+import com.rehome.sgbaxj.utils.HttpListener
+import com.rehome.sgbaxj.utils.NetworkUtil
+import com.rehome.sgbaxj.utils.NoProgresshttpUtils
+import com.rehome.sgbaxj.utils.SPUtils
+import com.rehome.sgbaxj.weight.MjEditDialog
+import com.rehome.sgbaxj.weight.WaitDialog
+import com.yolanda.nohttp.NoHttp
+import com.yolanda.nohttp.RequestMethod
+import com.yolanda.nohttp.rest.Request
+import com.yolanda.nohttp.rest.RequestQueue
+import com.yolanda.nohttp.rest.Response
+
+class BamjActivity : BaseActivityOaToolbarViewBinding() {
+
+ private val mjList: MutableList = mutableListOf()
+ private lateinit var adapter: BamjAdapter
+ private lateinit var headView: View
+ private lateinit var head: View
+ private lateinit var tv_yjzj: TextView
+ private lateinit var xj_cb: CheckBox
+ private lateinit var dialog: WaitDialog
+ private lateinit var queue: RequestQueue
+ private lateinit var username: String
+
+ override fun getViewBinding() = ActivityBamjBinding.inflate(layoutInflater)
+
+ override fun getToolbar() = binding.toolbarView.toolbar
+
+ override fun initView() {
+ initToolbar("保安免检管理", "提交", { finish() }, {
+ if (NetworkUtil.hasNetWorkStatus(context, true)) {
+ showLog("有wifi网络")
+ if (mjList.size > 0) {
+ var isChecked = false
+ val mjCheckList: MutableList = mutableListOf()
+ for (i in mjList.indices) {
+ if (mjList[i].isChecked) {
+ isChecked = true
+ mjCheckList.add(mjList[i])
+ }
+ }
+ if (isChecked) {
+ val dialog = MjEditDialog(this, object : MjEditDialog.DialogListener {
+ override fun onYesClick(noCheckReason: String) {
+ if(!TextUtils.isEmpty(noCheckReason)){
+ upLoadBaMj(noCheckReason,mjCheckList)
+ }else{
+ showToast("免检原因必填")
+ }
+ }
+
+ override fun onNoClick() {
+
+ }
+
+ })
+ dialog.show()
+ } else {
+ showToast("请选择要免检的计划")
+ }
+ }
+ } else {
+ showLog("无网络")
+ showToast("无wifi网络连接,请先连接到wifi网络")
+ }
+ })
+ queue = NoHttp.newRequestQueue(1)
+ username = SPUtils.get(context, Contans.USERID, "") as String
+ binding.lv.emptyView = binding.tvNodata
+ dialog = WaitDialog(context, "上传数据中...请稍等...")
+ dialog.setCancelable(false)
+ headView = View.inflate(context, R.layout.scxscb_item, null)
+ head = headView.findViewById(R.id.head)
+ tv_yjzj = headView.findViewById(R.id.tv_yjzj)
+ tv_yjzj.text = "总点数"
+ xj_cb = headView.findViewById(R.id.xj_cb)
+ binding.lv.addHeaderView(headView, null, false)
+ xj_cb.setOnClickListener {
+ if (xj_cb.isChecked) {
+ for (i in mjList.indices) {
+ mjList[i].isChecked = true
+ adapter.notifyDataSetChanged()
+ }
+ } else {
+ for (i in mjList.indices) {
+ mjList[i].isChecked = false
+ adapter.notifyDataSetChanged()
+ }
+ }
+ }
+
+ adapter = BamjAdapter(this, mjList) { view: View ->
+ val checkBox = view as CheckBox
+ val index = checkBox.tag as Int
+ mjList[index].isChecked = checkBox.isChecked
+ var count = 0
+ for (a in mjList.indices) {
+ if (mjList[a].isChecked) {
+ count++
+ }
+ }
+ xj_cb.isChecked = count == mjList.size
+ adapter.notifyDataSetChanged()
+ }
+ binding.lv.adapter = adapter
+ }
+
+ override fun initData() {
+ if (NetworkUtil.hasNetWorkStatus(context, true)) {
+ showLog("有wifi网络")
+ requestData()
+ } else {
+ showLog("无网络")
+ }
+ }
+
+ private fun requestData() { //下载巡检数据
+ val request: Request =
+ NoHttp.createStringRequest(Contans.IP + Contans.BA_Download_MJ_URL, RequestMethod.POST)
+ request.setDefineRequestBodyForJson(createJsonBaMjDown())
+ NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener {
+
+ override fun onSucceed(what: Int, response: Response?) {
+ showLog("----------------")
+ val result = response?.get()
+ showLog(result ?: "")
+ val bean = GsonUtils.GsonToBean(result, MjList::class.java)
+ if (bean.state == "1") {
+ if (bean.data != null && bean.data.size > 0) {
+ mjList.clear()
+ val list = bean.data //服务器数据
+ mjList.addAll(list)
+ adapter.notifyDataSetChanged()
+ }else{
+ mjList.clear()
+ adapter.notifyDataSetChanged()
+ }
+ }else{
+ mjList.clear()
+ adapter.notifyDataSetChanged()
+ }
+ }
+
+ override fun onFailed(what: Int, response: Response?) {
+
+ }
+ })
+ }
+
+ private fun upLoadBaMj(noCheckReason: String?,mjCheckList: MutableList) {
+ val request: Request =
+ NoHttp.createStringRequest(Contans.IP + Contans.BA_UPLOAD_MJ_URL, RequestMethod.POST)
+ request.setDefineRequestBodyForJson(createJsonBaMjUp(noCheckReason,mjCheckList))
+ NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener {
+
+ override fun onSucceed(what: Int, response: Response?) {
+ showLog("----------------")
+ val result = response?.get()
+ showLog(result ?: "")
+ val bean = GsonUtils.GsonToBean(result, MjList::class.java)
+ if (bean.state == "1") {
+ showToast("操作成功")
+ initData()
+ }
+ }
+
+ override fun onFailed(what: Int, response: Response?) {
+
+ }
+ })
+ }
+
+ private fun createJsonBaMjDown(): String {
+ val info = XsRequestInfo()
+ info.action = "BA_XJGL_BAKH_GET"
+ val json = GsonUtils.GsonString(info)
+ showLog(json)
+ return json
+ }
+
+ private fun createJsonBaMjUp(noCheckReason: String?,mjCheckList: MutableList): String {
+ val info = MjRequestInfo()
+ info.action = "BA_XJGL_BAKHSC_SET"
+ if (noCheckReason != null) {
+ info.bz = noCheckReason
+ } else {
+ info.bz = ""
+ }
+ info.scr = username
+ info.data = mjCheckList
+ val json = GsonUtils.GsonString(info)
+ showLog(json)
+ return json
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/adapter/BamjAdapter.java b/app/src/main/java/com/rehome/sgbaxj/adapter/BamjAdapter.java
new file mode 100644
index 0000000..481b468
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/adapter/BamjAdapter.java
@@ -0,0 +1,93 @@
+package com.rehome.sgbaxj.adapter;
+
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.TextView;
+import com.rehome.sgbaxj.R;
+import com.rehome.sgbaxj.bean.MjList;
+import com.zhy.autolayout.utils.AutoUtils;
+import java.util.List;
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:16
+ * 描述:保安免检计划适配器
+ */
+
+public class BamjAdapter extends BaseAdapter {
+
+ private Context context;
+ private List mjjh;
+ private CallBack mCallBack;
+
+ public BamjAdapter(Context context, List mjjh, CallBack mCallBack) {
+ this.context = context;
+ this.mCallBack = mCallBack;
+ this.mjjh=mjjh;
+ }
+
+ public interface CallBack {
+ void Click(View view);
+ }
+
+ @Override
+ public int getCount() {
+ return mjjh.size();
+ }
+
+ @Override
+ public Object getItem(int i) {
+ return mjjh.get(i);
+ }
+
+ @Override
+ public long getItemId(int i) {
+ return i;
+ }
+
+ @Override
+ public View getView(int i, View view, ViewGroup viewGroup) {
+
+ ViewHolder holder;
+ if (view == null) {
+ holder = new ViewHolder();
+ view = LayoutInflater.from(context).inflate(R.layout.scxscb_item, viewGroup, false);
+ holder.xj_cb = view.findViewById(R.id.xj_cb);
+ holder.tv_gwmc = view.findViewById(R.id.tv_gwmc);
+ holder.tv_yjzj = view.findViewById(R.id.tv_yjzj);
+
+ view.setTag(holder);
+ AutoUtils.autoSize(view);
+ } else {
+ holder = (ViewHolder) view.getTag();
+ }
+
+
+ holder.xj_cb.setChecked(mjjh.get(i).isChecked());
+ holder.tv_gwmc.setText(mjjh.get(i).getKhmc());
+ holder.tv_yjzj.setText(mjjh.get(i).getZds());
+
+
+
+ holder.xj_cb.setTag(i);
+ holder.xj_cb.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ mCallBack.Click(view);
+ }
+ });
+ return view;
+ }
+
+ static class ViewHolder {
+ CheckBox xj_cb;
+ TextView tv_gwmc;
+ TextView tv_yjzj;
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity.java b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity.java
index cbce4a9..6427b4e 100755
--- a/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity.java
+++ b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity.java
@@ -16,6 +16,7 @@ import android.nfc.tech.NfcF;
import android.nfc.tech.NfcV;
import android.os.Bundle;
import android.os.Parcelable;
+import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
@@ -222,7 +223,11 @@ public abstract class BaseActivity extends AutoLayoutActivity {
public void showLog(String logText) {
if (BuildConfig.LOG_ERROR) {
- Log.i("app", logText);
+ if(TextUtils.isEmpty(logText)){
+ Log.i("app", "logText is null");
+ }else{
+ Log.i("app", logText);
+ }
}
}
}
diff --git a/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity3.java b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity3.java
index 8beb576..6694391 100755
--- a/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity3.java
+++ b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivity3.java
@@ -17,6 +17,7 @@ import android.nfc.tech.NfcF;
import android.nfc.tech.NfcV;
import android.os.Bundle;
import android.os.Parcelable;
+import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
@@ -239,7 +240,11 @@ public abstract class BaseActivity3 extends AutoLayoutActivity {
public void showLog(String logText) {
if (BuildConfig.LOG_ERROR) {
- Log.i("app", logText);
+ if(TextUtils.isEmpty(logText)){
+ Log.i("app", "logText is null");
+ }else{
+ Log.i("app", logText);
+ }
}
}
diff --git a/app/src/main/java/com/rehome/sgbaxj/base/BaseActivityAutoToolbarViewBinding.kt b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivityAutoToolbarViewBinding.kt
new file mode 100644
index 0000000..75da988
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivityAutoToolbarViewBinding.kt
@@ -0,0 +1,268 @@
+package com.rehome.sgbaxj.base
+
+
+import android.app.Activity
+import android.app.PendingIntent
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.nfc.NdefMessage
+import android.nfc.NfcAdapter
+import android.nfc.tech.*
+import android.os.Build
+import android.os.Bundle
+import android.text.TextUtils
+import android.util.Log
+import android.widget.Toast
+import androidx.viewbinding.ViewBinding
+import com.rehome.sgbaxj.BuildConfig
+import com.rehome.sgbaxj.R
+import com.rehome.sgbaxj.utils.AutoToolbar
+import com.rehome.sgbaxj.utils.ControllerActivity
+import com.rehome.sgbaxj.utils.StatusBarUtil
+import com.zhy.autolayout.AutoLayoutActivity
+import java.nio.charset.StandardCharsets
+import java.util.*
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:04
+ * 描述:基类使用ViewBinding,ButterKnife已被作者废弃,不再维护
+ */
+abstract class BaseActivityAutoToolbarViewBinding : AutoLayoutActivity() {
+ protected lateinit var binding: T
+ protected lateinit var mToolbar: AutoToolbar
+ protected lateinit var context: Context
+ private var nfcAdapter: NfcAdapter? = null
+ private var readResult = ""
+ private var pendingIntent: PendingIntent? = null
+ private lateinit var mFilters: Array
+ private lateinit var mTechLists: Array>
+ private var isFirst = true
+ private var ndef: IntentFilter? = null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = getViewBinding()
+ mToolbar = getToolbar()
+ setContentView(binding.root)
+ context = this
+ ControllerActivity.getAppManager().addActivity(this)
+ initView()
+ initData()
+ }
+
+ protected abstract fun getViewBinding(): T
+ protected abstract fun getToolbar(): AutoToolbar
+
+ //初始化View
+ protected abstract fun initView()
+
+ //初始化数据
+ protected abstract fun initData()
+
+
+ fun startActivity(cls: Class?) {
+ val intent = Intent(this, cls)
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ startActivity(intent)
+ }
+
+ override fun onPause() {
+ super.onPause()
+ if (nfcAdapter != null) {
+ nfcAdapter!!.disableForegroundDispatch(this)
+ }
+ }
+
+ /*
+ * 重写onResume回调函数的意义在于处理多次读取NFC标签时的情况
+ */
+ override fun onResume() {
+ super.onResume()
+
+ // 前台分发系统,这里的作用在于第二次检测NFC标签时该应用有最高的捕获优先权.
+ if (nfcAdapter != null && pendingIntent != null) {
+ nfcAdapter!!.enableForegroundDispatch(
+ this, pendingIntent, mFilters,
+ mTechLists
+ )
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ ControllerActivity.getAppManager().finishActivity(this)
+ }
+
+ /**
+ * 显示toast
+ *
+ * @param text
+ */
+ fun showToast(text: String?) {
+ if (text != null && text.trim { it <= ' ' } != "") {
+ Toast.makeText(this, text, Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ fun showToast(id: Int) {
+ Toast.makeText(this, id, Toast.LENGTH_SHORT).show()
+ }
+
+ /**
+ * 检测工作,判断设备的NFC支持情况
+ *
+ * @return
+ */
+ private fun ifNFCUse(): Boolean {
+ if (nfcAdapter == null) {
+ Toast.makeText(this, "设备不支持NFC!", Toast.LENGTH_SHORT).show()
+ return false
+ }
+ if (!nfcAdapter!!.isEnabled) {
+ Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show()
+ return false
+ }
+ return true
+ }
+
+ /**
+ * 初始化过程
+ */
+ fun initNFC() {
+
+ //NFC适配器,所有的关于NFC的操作从该适配器进行
+ nfcAdapter = NfcAdapter.getDefaultAdapter(this)
+ if (!ifNFCUse()) {
+ return
+ }
+ //将被调用的Intent,用于重复被Intent触发后将要执行的跳转
+ pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ PendingIntent.getActivity(
+ this,
+ 0,
+ Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
+ PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
+ )
+ } else {
+ PendingIntent.getActivity(
+ this,
+ 0,
+ Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
+ PendingIntent.FLAG_UPDATE_CURRENT
+ )
+ }
+
+
+ //设定要过滤的标签动作,这里只接收ACTION_NDEF_DISCOVERED类型
+ ndef = IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED)
+ ndef!!.addCategory("*/*")
+ mFilters = arrayOf(ndef!!) // 过滤器
+ mTechLists = arrayOf(
+ arrayOf(NfcA::class.java.name), arrayOf(
+ NfcF::class.java.name
+ ), arrayOf(NfcB::class.java.name), arrayOf(
+ NfcV::class.java.name
+ ), arrayOf(MifareClassic::class.java.name), arrayOf(
+ MifareUltralight::class.java.name
+ ), arrayOf(IsoDep::class.java.name)
+ ) // 允许扫描的标签类型
+ if (isFirst) {
+ if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent
+ .action
+ ) {
+ ndef = IntentFilter()
+ if (readFromTag(intent)) {
+ Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show()
+ } else {
+ Toast.makeText(this, "标签数据为空", Toast.LENGTH_SHORT).show()
+ }
+ }
+ isFirst = false
+ }
+ }
+
+ /**
+ * 2进制to 16进制
+ * @param src
+ * @return
+ */
+ private fun bytesToHex(src: ByteArray?): String {
+ val sb = StringBuffer()
+ if (src == null || src.isEmpty()) {
+ return ""
+ }
+ var sTemp: String
+ for (i in src.indices) {
+ sTemp = Integer.toHexString(0xFF and src[i].toInt())
+ if (sTemp.length < 2) {
+ sb.append(0)
+ }
+ sb.append(sTemp.uppercase(Locale.getDefault()))
+ }
+ return sb.toString()
+ }
+
+ /*
+ * 有必要要了解onNewIntent回调函数的调用时机,请自行上网查询
+ */
+ override fun onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action || NfcAdapter.ACTION_TECH_DISCOVERED == intent.action) {
+ val id = bytesToHex(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID))
+ handleNfc(id)
+
+// if (readFromTag(intent)) {
+// Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show();
+// handleNfc(readResult);
+// } else {
+// Toast.makeText(this, "ID:" + id + " 标签数据为空", Toast.LENGTH_SHORT).show();
+// }
+ }
+ }
+
+ /**
+ * 读取NFC标签数据的操作
+ */
+ private fun readFromTag(intent: Intent): Boolean {
+ if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) {
+ val rawArray = intent
+ .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)
+ if (rawArray != null) {
+ val mNdefMsg = rawArray[0] as NdefMessage
+ val mNdefRecord = mNdefMsg.records[0]
+ if (mNdefRecord != null) {
+ readResult = String(mNdefRecord.payload, StandardCharsets.UTF_8)
+ return true
+ }
+ //return false;
+ }
+ return false
+ }
+ return false
+ }
+
+ //处理NFC
+ open fun handleNfc(result: String?) {
+ //showToast(result);
+ }
+
+ open fun setBack() {
+ mToolbar.setNavigationIcon(R.mipmap.ac_back_icon)
+ mToolbar.setNavigationOnClickListener { finish() }
+ }
+
+ protected open fun setStatusBar() {
+ StatusBarUtil.setColor(this, resources.getColor(R.color.colorPrimary))
+ }
+
+ open fun showLog(logText: String?) {
+ if (BuildConfig.LOG_ERROR) {
+ if (TextUtils.isEmpty(logText)) {
+ Log.i("app", "logText is null")
+ } else {
+ Log.i("app", logText!!)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/base/BaseActivityOaToolbarViewBinding.kt b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivityOaToolbarViewBinding.kt
new file mode 100644
index 0000000..7ce28ed
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/base/BaseActivityOaToolbarViewBinding.kt
@@ -0,0 +1,276 @@
+package com.rehome.sgbaxj.base
+
+
+import android.app.Activity
+import android.app.PendingIntent
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.nfc.NdefMessage
+import android.nfc.NfcAdapter
+import android.nfc.tech.*
+import android.os.Build
+import android.os.Bundle
+import android.text.TextUtils
+import android.util.Log
+import android.view.View
+import android.widget.Toast
+import androidx.viewbinding.ViewBinding
+import com.rehome.sgbaxj.utils.ControllerActivity
+import com.rehome.sgbaxj.BuildConfig
+import com.rehome.sgbaxj.R
+import com.rehome.sgbaxj.utils.OAToolbar
+import com.zhy.autolayout.AutoLayoutActivity
+import java.nio.charset.StandardCharsets
+import java.util.*
+
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:09
+ * 描述:基类使用ViewBinding,ButterKnife已被作者废弃,不再维护
+ */
+abstract class BaseActivityOaToolbarViewBinding : AutoLayoutActivity() {
+ protected lateinit var binding: T
+ protected lateinit var mToolbar: OAToolbar
+ protected lateinit var context: Context
+ private var nfcAdapter: NfcAdapter? = null
+ private var readResult = ""
+ private var pendingIntent: PendingIntent? = null
+ private lateinit var mFilters: Array
+ private lateinit var mTechLists: Array>
+ private var isFirst = true
+ private var ndef: IntentFilter? = null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = getViewBinding()
+ mToolbar = getToolbar()
+ setContentView(binding.root)
+ context = this
+ ControllerActivity.getAppManager().addActivity(this)
+ initView()
+ initData()
+ }
+ //初始化ViewBinding
+ protected abstract fun getViewBinding(): T
+ //初始化OAToolbar
+ protected abstract fun getToolbar(): OAToolbar
+ //初始化View
+ protected abstract fun initView()
+ //初始化数据
+ protected abstract fun initData()
+
+
+ fun startActivity(cls: Class?) {
+ val intent = Intent(this, cls)
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ startActivity(intent)
+ }
+
+ override fun onPause() {
+ super.onPause()
+ if (nfcAdapter != null) {
+ nfcAdapter!!.disableForegroundDispatch(this)
+ }
+ }
+
+ /*
+ * 重写onResume回调函数的意义在于处理多次读取NFC标签时的情况
+ */
+ override fun onResume() {
+ super.onResume()
+
+ // 前台分发系统,这里的作用在于第二次检测NFC标签时该应用有最高的捕获优先权.
+ if (nfcAdapter != null && pendingIntent != null) {
+ nfcAdapter!!.enableForegroundDispatch(
+ this, pendingIntent, mFilters,
+ mTechLists
+ )
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ ControllerActivity.getAppManager().finishActivity(this)
+ }
+
+ /**
+ * 显示toast
+ *
+ * @param text
+ */
+ fun showToast(text: String?) {
+ if (text != null && text.trim { it <= ' ' } != "") {
+ Toast.makeText(this, text, Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ fun showToast(id: Int) {
+ Toast.makeText(this, id, Toast.LENGTH_SHORT).show()
+ }
+
+ /**
+ * 检测工作,判断设备的NFC支持情况
+ *
+ * @return
+ */
+ private fun ifNFCUse(): Boolean {
+ if (nfcAdapter == null) {
+ Toast.makeText(this, "设备不支持NFC!", Toast.LENGTH_SHORT).show()
+ return false
+ }
+ if (!nfcAdapter!!.isEnabled) {
+ Toast.makeText(this, "请在系统设置中先启用NFC功能!", Toast.LENGTH_SHORT).show()
+ return false
+ }
+ return true
+ }
+
+ /**
+ * 初始化过程
+ */
+ fun initNFC() {
+
+ //NFC适配器,所有的关于NFC的操作从该适配器进行
+ nfcAdapter = NfcAdapter.getDefaultAdapter(this)
+ if (!ifNFCUse()) {
+ return
+ }
+ //将被调用的Intent,用于重复被Intent触发后将要执行的跳转
+ pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ PendingIntent.getActivity(
+ this,
+ 0,
+ Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
+ PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
+ )
+ } else {
+ PendingIntent.getActivity(
+ this,
+ 0,
+ Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
+ PendingIntent.FLAG_UPDATE_CURRENT
+ )
+ }
+
+
+ //设定要过滤的标签动作,这里只接收ACTION_NDEF_DISCOVERED类型
+ ndef = IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED)
+ ndef!!.addCategory("*/*")
+ mFilters = arrayOf(ndef!!) // 过滤器
+ mTechLists = arrayOf(
+ arrayOf(NfcA::class.java.name), arrayOf(
+ NfcF::class.java.name
+ ), arrayOf(NfcB::class.java.name), arrayOf(
+ NfcV::class.java.name
+ ), arrayOf(MifareClassic::class.java.name), arrayOf(
+ MifareUltralight::class.java.name
+ ), arrayOf(IsoDep::class.java.name)
+ ) // 允许扫描的标签类型
+ if (isFirst) {
+ if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent
+ .action
+ ) {
+ ndef = IntentFilter()
+ if (readFromTag(intent)) {
+ Toast.makeText(this, readResult, Toast.LENGTH_SHORT).show()
+ } else {
+ Toast.makeText(this, "标签数据为空", Toast.LENGTH_SHORT).show()
+ }
+ }
+ isFirst = false
+ }
+ }
+
+ /**
+ * 2进制to 16进制
+ * @param src
+ * @return
+ */
+ private fun bytesToHex(src: ByteArray?): String {
+ val sb = StringBuffer()
+ if (src == null || src.isEmpty()) {
+ return ""
+ }
+ var sTemp: String
+ for (i in src.indices) {
+ sTemp = Integer.toHexString(0xFF and src[i].toInt())
+ if (sTemp.length < 2) {
+ sb.append(0)
+ }
+ sb.append(sTemp.uppercase(Locale.getDefault()))
+ }
+ return sb.toString()
+ }
+
+ /*
+ * 有必要要了解onNewIntent回调函数的调用时机,请自行上网查询
+ */
+ override fun onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action || NfcAdapter.ACTION_TECH_DISCOVERED == intent.action) {
+ val id = bytesToHex(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID))
+ handleNfc(id)
+ }
+ }
+
+ /**
+ * 读取NFC标签数据的操作
+ */
+ private fun readFromTag(intent: Intent): Boolean {
+ if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) {
+ val rawArray = intent
+ .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)
+ if (rawArray != null) {
+ val mNdefMsg = rawArray[0] as NdefMessage
+ val mNdefRecord = mNdefMsg.records[0]
+ if (mNdefRecord != null) {
+ readResult = String(mNdefRecord.payload, StandardCharsets.UTF_8)
+ return true
+ }
+ }
+ return false
+ }
+ return false
+ }
+
+ //处理NFC
+ open fun handleNfc(result: String) {
+ //showToast(result);
+ }
+
+ fun initToolbar(
+ title: String,
+ rightText: String,
+ listenerLeftClick: View.OnClickListener,
+ listenerRightClick: View.OnClickListener
+ ) {
+ mToolbar.setTvTitleText(title)
+ mToolbar.setTvRightText(rightText)
+ mToolbar.setIvLeftIcon(R.mipmap.ac_back_icon)
+ mToolbar.setIvLeftOnClickListener(listenerLeftClick)
+ mToolbar.setTvRightOnClickListener(listenerRightClick)
+ }
+
+ fun initToolbar(
+ title: String,
+ rightText: String,
+ listenerRightClick: View.OnClickListener
+ ) {
+ mToolbar.setTvTitleText(title)
+ mToolbar.setTvRightText(rightText)
+ mToolbar.setIvLeftIcon(R.mipmap.ac_back_icon)
+ mToolbar.setIvLeftOnClickListener { finish() }
+ mToolbar.setTvRightOnClickListener(listenerRightClick)
+ }
+
+ open fun showLog(logText: String?) {
+ if (BuildConfig.LOG_ERROR) {
+ if (TextUtils.isEmpty(logText)) {
+ Log.i("app", "logText is null")
+ } else {
+ Log.i("app", logText!!)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/base/BaseFragment.java b/app/src/main/java/com/rehome/sgbaxj/base/BaseFragment.java
index 48243f0..2c9b071 100755
--- a/app/src/main/java/com/rehome/sgbaxj/base/BaseFragment.java
+++ b/app/src/main/java/com/rehome/sgbaxj/base/BaseFragment.java
@@ -3,6 +3,7 @@ package com.rehome.sgbaxj.base;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
+import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -62,7 +63,11 @@ public abstract class BaseFragment extends Fragment {
public void showLog(String logText) {
if (BuildConfig.LOG_ERROR) {
- Log.i("app", logText);
+ if(TextUtils.isEmpty(logText)){
+ Log.i("app", "logText is null");
+ }else{
+ Log.i("app", logText);
+ }
}
}
diff --git a/app/src/main/java/com/rehome/sgbaxj/base/BaseFragmentKotlinViewBinding.kt b/app/src/main/java/com/rehome/sgbaxj/base/BaseFragmentKotlinViewBinding.kt
new file mode 100644
index 0000000..19984d5
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/base/BaseFragmentKotlinViewBinding.kt
@@ -0,0 +1,31 @@
+package com.rehome.sgbaxj.base
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:14
+ * 描述:
+ */
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.viewbinding.ViewBinding
+
+abstract class BaseFragmentKotlinViewBinding : Fragment() {
+ protected var binding: T? = null
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = getBinding(inflater, container)
+ return binding!!.root
+ }
+
+ protected abstract fun getBinding(inflater: LayoutInflater?, container: ViewGroup?): T
+ override fun onDestroyView() {
+ super.onDestroyView()
+ binding = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/base/BaseFragmentViewBinding.java b/app/src/main/java/com/rehome/sgbaxj/base/BaseFragmentViewBinding.java
new file mode 100644
index 0000000..d5f4b42
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/base/BaseFragmentViewBinding.java
@@ -0,0 +1,84 @@
+package com.rehome.sgbaxj.base;
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:15
+ * 描述:
+ */
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.viewbinding.ViewBinding;
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-01-11 15:13
+ * 描述:
+ */
+public abstract class BaseFragmentViewBinding extends Fragment {
+
+ protected Context context;
+
+ protected T binding;
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ binding = getBinding(inflater, container);
+ return binding.getRoot();
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ initView();
+ initData();
+ }
+
+ protected abstract T getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container);
+ /**
+ * 初始化视图
+ */
+ protected abstract void initView();
+
+ /**
+ * 初始化数据
+ */
+ protected abstract void initData();
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+
+ @Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ this.context = context;
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ this.context = null;
+ }
+
+ public void showToast(String msg) {
+ Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
+ }
+
+ public void showToast(int strId) {
+ Toast.makeText(context, strId, Toast.LENGTH_SHORT).show();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/bean/MjList.java b/app/src/main/java/com/rehome/sgbaxj/bean/MjList.java
new file mode 100644
index 0000000..f5b4512
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/bean/MjList.java
@@ -0,0 +1,148 @@
+package com.rehome.sgbaxj.bean;
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:17
+ * 描述:
+ */
+
+
+import java.util.List;
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-03-03 15:32
+ * 描述:
+ */
+public class MjList {
+ private String state;
+ private String msg;
+ private List data;
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public static class DataBean {
+
+ private String zxid;
+
+ private String khmc;
+
+ private String st;
+
+ private String et;
+
+ private String zds;
+
+ private String yjds;
+
+ private String ljds;
+
+ private String mjds;
+
+ private String mk;
+
+ private boolean checked;//0:未选中,1:已选中
+
+ public String getZxid() {
+ return zxid;
+ }
+
+ public void setZxid(String zxid) {
+ this.zxid = zxid;
+ }
+
+ public String getKhmc() {
+ return khmc;
+ }
+
+ public void setKhmc(String khmc) {
+ this.khmc = khmc;
+ }
+
+ public String getSt() {
+ return st;
+ }
+
+ public void setSt(String st) {
+ this.st = st;
+ }
+
+ public String getEt() {
+ return et;
+ }
+
+ public void setEt(String et) {
+ this.et = et;
+ }
+
+ public String getZds() {
+ return zds;
+ }
+
+ public void setZds(String zds) {
+ this.zds = zds;
+ }
+
+ public String getYjds() {
+ return yjds;
+ }
+
+ public void setYjds(String yjds) {
+ this.yjds = yjds;
+ }
+
+ public String getLjds() {
+ return ljds;
+ }
+
+ public void setLjds(String ljds) {
+ this.ljds = ljds;
+ }
+
+ public String getMjds() {
+ return mjds;
+ }
+
+ public void setMjds(String mjds) {
+ this.mjds = mjds;
+ }
+
+ public String getMk() {
+ return mk;
+ }
+
+ public void setMk(String mk) {
+ this.mk = mk;
+ }
+
+ public boolean isChecked() {
+ return checked;
+ }
+
+ public void setChecked(boolean checked) {
+ this.checked = checked;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/sgbaxj/bean/MjRequestInfo.java b/app/src/main/java/com/rehome/sgbaxj/bean/MjRequestInfo.java
new file mode 100644
index 0000000..41adecc
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/bean/MjRequestInfo.java
@@ -0,0 +1,47 @@
+package com.rehome.sgbaxj.bean;
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:38
+ * 描述:免检管理上传请求数据
+ */
+import java.util.List;
+
+public class MjRequestInfo {
+ private String action;
+ private String bz;
+ private String scr;
+ private List data;
+
+ public String getAction() {
+ return action;
+ }
+
+ public void setAction(String action) {
+ this.action = action;
+ }
+
+ public String getBz() {
+ return bz;
+ }
+
+ public void setBz(String bz) {
+ this.bz = bz;
+ }
+
+ public String getScr() {
+ return scr;
+ }
+
+ public void setScr(String scr) {
+ this.scr = scr;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+}
diff --git a/app/src/main/java/com/rehome/sgbaxj/contans/Contans.java b/app/src/main/java/com/rehome/sgbaxj/contans/Contans.java
index ffbd568..7ed3ee0 100755
--- a/app/src/main/java/com/rehome/sgbaxj/contans/Contans.java
+++ b/app/src/main/java/com/rehome/sgbaxj/contans/Contans.java
@@ -62,6 +62,10 @@ public class Contans {
public final static String GET_STATISTICS_DATA = "XSCB/STATISTICS_CHECKED.ashx";//获取本人上传的巡检数据
public final static String LAST_UPLOAD_POINT_CHECKED = "XSCB/LAST_UPLOAD_POINT_CHECKED.ashx";//获取当前值当前点最后的已巡检人
public final static String XJ_UPLOAD_LOCATION_CHECKED = "XSCB/CURRENT_CHECK_LOCALTION.ashx";//上传巡检人当前位置
+ //保安获取免检列表
+ public final static String BA_Download_MJ_URL = "MJGL/BA_MJGL.ashx";
+ //保安上传免检列表
+ public final static String BA_UPLOAD_MJ_URL = "MJGL/BA_MJGL.ashx";
// ========================= intent KEY ========================//
diff --git a/app/src/main/java/com/rehome/sgbaxj/utils/NoProgresshttpUtils.java b/app/src/main/java/com/rehome/sgbaxj/utils/NoProgresshttpUtils.java
index c5a4e8e..29cd636 100644
--- a/app/src/main/java/com/rehome/sgbaxj/utils/NoProgresshttpUtils.java
+++ b/app/src/main/java/com/rehome/sgbaxj/utils/NoProgresshttpUtils.java
@@ -4,7 +4,10 @@ package com.rehome.sgbaxj.utils;
import android.app.Activity;
import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+import com.rehome.sgbaxj.BuildConfig;
import com.rehome.sgbaxj.R;
import com.yolanda.nohttp.NoHttp;
import com.yolanda.nohttp.download.DownloadQueue;
@@ -63,9 +66,20 @@ public class NoProgresshttpUtils {
public void add(Activity mActivity, int what, Request request, HttpListener callback) {
+ showLog(request.url());
mQueue.add(what, request, new HttpResponseListenerNoProgress(mActivity, request, callback));
}
+ public void showLog(String logText) {
+ if (BuildConfig.LOG_ERROR) {
+ if(TextUtils.isEmpty(logText)){
+ Log.i("app", "logText is null");
+ }else{
+ Log.i("app", logText);
+ }
+ }
+ }
+
/**
* 取消这个sign这个标记的所有请求
*
diff --git a/app/src/main/java/com/rehome/sgbaxj/utils/NohttpUtils.java b/app/src/main/java/com/rehome/sgbaxj/utils/NohttpUtils.java
index 1a2772a..c6b0f6e 100755
--- a/app/src/main/java/com/rehome/sgbaxj/utils/NohttpUtils.java
+++ b/app/src/main/java/com/rehome/sgbaxj/utils/NohttpUtils.java
@@ -2,7 +2,10 @@ package com.rehome.sgbaxj.utils;
import android.app.Activity;
import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+import com.rehome.sgbaxj.BuildConfig;
import com.rehome.sgbaxj.R;
import com.yolanda.nohttp.NoHttp;
import com.yolanda.nohttp.download.DownloadQueue;
@@ -72,14 +75,26 @@ public class NohttpUtils {
* @param
*/
public void add(Activity mActivity, int what, Request request, HttpListener callback, boolean canCanel, boolean isLoading, String msg) {
+ showLog(request.url());
mQueue.add(what, request, new HttpResponseListener(mActivity, request, callback, canCanel, isLoading, msg));
}
public void add(Activity mActivity, int what, Request request, HttpListener callback) {
+ showLog(request.url());
mQueue.add(what, request, new HttpResponseListener(mActivity, request, callback, true, true, "加载中..."));
}
+ public void showLog(String logText) {
+ if (BuildConfig.LOG_ERROR) {
+ if(TextUtils.isEmpty(logText)){
+ Log.i("app", "logText is null");
+ }else{
+ Log.i("app", logText);
+ }
+ }
+ }
+
/**
* 取消这个sign这个标记的所有请求
*
diff --git a/app/src/main/java/com/rehome/sgbaxj/weight/MjEditDialog.java b/app/src/main/java/com/rehome/sgbaxj/weight/MjEditDialog.java
new file mode 100644
index 0000000..db9c279
--- /dev/null
+++ b/app/src/main/java/com/rehome/sgbaxj/weight/MjEditDialog.java
@@ -0,0 +1,158 @@
+package com.rehome.sgbaxj.weight;
+
+
+/**
+ * Create By HuangWenFei
+ * 创建日期:2023-07-25 14:39
+ * 描述:免检提交对话框
+ */
+
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.rehome.sgbaxj.R;
+
+/**
+ * Created by Administrator on 2018/1/31.
+ */
+
+public class MjEditDialog extends Dialog {
+ private Button yes, no;//确定按钮
+ private TextView titleTv;//消息标题文本
+ private EditText et_phone;//输入电话
+ private String titleStr;//从外界设置的title文本
+ private String messageStr;//从外界设置的消息文本
+ //确定文本和取消文本的显示内容
+ private String yesStr, noStr;
+
+ private DialogListener listener;//取消,确定按钮被点击了的监听器
+
+ public MjEditDialog(Context context, DialogListener listener) {
+ super(context, R.style.Dialog_Msg);
+ this.listener = listener;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.dialog_mj_edit);
+ //按空白处不能取消动画
+ setCanceledOnTouchOutside(false);
+
+ //初始化界面控件
+ initView();
+ //初始化界面数据
+ initData();
+ //初始化界面控件的事件
+ initEvent();
+
+ }
+
+ /**
+ * 初始化界面的确定和取消监听器
+ */
+ private void initEvent() {
+ //设置确定按钮被点击后,向外界提供监听
+ yes.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //dismiss();
+ if (listener != null) {
+ if (TextUtils.isEmpty(et_phone.getText().toString().trim())) {
+ et_phone.setError("免检原因必填");
+ listener.onYesClick("");
+ } else {
+ dismiss();
+ listener.onYesClick(et_phone.getText().toString().trim());
+ }
+ }
+ }
+ });
+
+ no.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dismiss();
+ if (listener != null) {
+ listener.onNoClick();
+ }
+ }
+ });
+ }
+
+ /**
+ * 初始化界面控件的显示数据
+ */
+ private void initData() {
+ //如果用户自定了title和message
+ if (titleStr != null) {
+ titleTv.setText(titleStr);
+ }
+ if (messageStr != null) {
+ et_phone.setText(messageStr);
+ }
+ //如果设置按钮的文字
+ if (yesStr != null) {
+ yes.setText(yesStr);
+ }
+ }
+
+ /**
+ * 初始化界面控件
+ */
+ private void initView() {
+ yes = (Button) findViewById(R.id.yes);
+ no = (Button) findViewById(R.id.no);
+ titleTv = (TextView) findViewById(R.id.title);
+ et_phone = (EditText) findViewById(R.id.et_phone);
+ }
+
+ /**
+ * 从外界Activity为Dialog设置标题
+ *
+ * @param title
+ */
+ public void setTitle(String title) {
+ titleStr = title;
+ }
+
+ /**
+ * 从外界Activity为Dialog设置dialog的message
+ *
+ * @param message
+ */
+ public void setMessage(String message) {
+ messageStr = message;
+ }
+
+ /**
+ * 设置确定按钮和取消被点击的接口
+ */
+ public interface DialogListener {
+ public void onYesClick(String noCheckReason);
+
+ public void onNoClick();
+ }
+
+ @Override
+ public void show() {
+ super.show();
+ /**
+ * 设置宽度全屏,要设置在show的后面
+ */
+ WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
+ layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
+ layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+ getWindow().getDecorView().setPadding(0, 0, 0, 0);
+ getWindow().setAttributes(layoutParams);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_bamj.xml b/app/src/main/res/layout/activity_bamj.xml
new file mode 100644
index 0000000..c58dadb
--- /dev/null
+++ b/app/src/main/res/layout/activity_bamj.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_mj_edit.xml b/app/src/main/res/layout/dialog_mj_edit.xml
new file mode 100644
index 0000000..6dc23ff
--- /dev/null
+++ b/app/src/main/res/layout/dialog_mj_edit.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 6074554..c69eeb4 100755
--- a/build.gradle
+++ b/build.gradle
@@ -8,6 +8,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.1'
+ classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20'
}
}