diff --git a/app/build.gradle b/app/build.gradle index 038635b..1fa6954 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,8 +77,7 @@ dependencies { implementation files('libs/ksoap2-android-assembly-3.6.0-jar-with-dependencies.jar') implementation files('libs/MiPush_SDK_Client_3_4_3.jar') implementation files('libs/badgeview.jar') - implementation files('libs/TbsFileSdk_base_arm64_release_1.0.5.6000017.20230423093653.aar') - + implementation files('libs/TbsFileSdk_release_1.0.5.6000026.20231101115927.aar') implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'com.zhy:autolayout:1.4.5' @@ -96,7 +95,7 @@ dependencies { implementation 'com.hjq:toast:8.8' implementation 'org.litepal.android:core:1.5.1' implementation 'com.orhanobut:logger:2.2.0' - implementation 'com.yanzhenjie:permission:2.0.3' +// implementation 'com.yanzhenjie:permission:2.0.3' implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.github.chrisbanes.photoview:library:1.2.4' @@ -144,5 +143,6 @@ dependencies { implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' implementation 'org.bouncycastle:bcpkix-jdk15on:1.47' implementation 'commons-codec:commons-codec:1.15' + implementation 'com.google.android.play:app-update:2.0.1' implementation project(':videocompressor') } \ No newline at end of file diff --git a/app/libs/TbsFileSdk_base_arm64_release_1.0.5.6000023.20231013114928.aar b/app/libs/TbsFileSdk_base_arm64_release_1.0.5.6000023.20231013114928.aar new file mode 100644 index 0000000..11272a1 Binary files /dev/null and b/app/libs/TbsFileSdk_base_arm64_release_1.0.5.6000023.20231013114928.aar differ diff --git a/app/libs/TbsFileSdk_base_arm64_release_1.0.5.6000017.20230423093653.aar b/app/libs/TbsFileSdk_release_1.0.5.6000026.20231101115927.aar similarity index 63% rename from app/libs/TbsFileSdk_base_arm64_release_1.0.5.6000017.20230423093653.aar rename to app/libs/TbsFileSdk_release_1.0.5.6000026.20231101115927.aar index a1a8d41..c9df6fa 100644 Binary files a/app/libs/TbsFileSdk_base_arm64_release_1.0.5.6000017.20230423093653.aar and b/app/libs/TbsFileSdk_release_1.0.5.6000026.20231101115927.aar differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8d78cbe..66c3c89 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ android:name="android.hardware.telephony" android:required="false" /> - @@ -456,6 +455,7 @@ android:screenOrientation="portrait" /> = Build.VERSION_CODES.TIRAMISU){ +// // 这个私有广播接收器不能够接收来自其他应用的广播。 +// registerReceiver(mReceiver, mFilter,RECEIVER_NOT_EXPORTED); +// }else{ +// registerReceiver(mReceiver, mFilter); +// } } /* @@ -116,7 +131,9 @@ public class BackUploadService extends Service { @Override public void onDestroy() { super.onDestroy(); - unregisterReceiver(mReceiver); // 删除广播 + //unregisterReceiver(mReceiver); // 删除广播 + //取消注册广播,防止内存泄漏 + localBroadcastManager.unregisterReceiver( mReceiver ); } @Override diff --git a/app/src/main/java/com/rehome/zhdcoa/service/PushService.java b/app/src/main/java/com/rehome/zhdcoa/service/PushService.java index fae30e0..0ae5162 100755 --- a/app/src/main/java/com/rehome/zhdcoa/service/PushService.java +++ b/app/src/main/java/com/rehome/zhdcoa/service/PushService.java @@ -16,6 +16,7 @@ import android.view.WindowManager; import androidx.appcompat.app.AlertDialog; import androidx.core.content.FileProvider; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.rehome.zhdcoa.App; import com.rehome.zhdcoa.BuildConfig; @@ -62,7 +63,6 @@ public class PushService extends IntentService { private int[] whats = new int[]{}; - private final String PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "/com.rehome.zhdcoa/"; private final String FILENAME = "zdxoaapp.apk"; @@ -250,14 +250,14 @@ public class PushService extends IntentService { Intent intent = new Intent(); intent.putExtra("isTask", true); intent.setAction("com.rehome.zhdcoa.RECEIVER"); - sendBroadcast(intent); + LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent); } } else { DataSupport.deleteAll(XwaqgcJh.class); Intent intent = new Intent(); intent.putExtra("isTask", false); intent.setAction("com.rehome.zhdcoa.RECEIVER"); - sendBroadcast(intent); + LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent); } } break; @@ -463,4 +463,26 @@ public class PushService extends IntentService { } return null; } + + private String getVersionNameNew() { + //1,包管理者对象packageManager + PackageManager pm = getPackageManager(); + //2,从包的管理者对象中,获取指定包名的基本信息(版本名称,版本号),传0代表获取基本信息 + try { + PackageInfo packageInfo; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + packageInfo = pm.getPackageInfo(getPackageName(), PackageManager.PackageInfoFlags.of(0)); + } else { + packageInfo = pm.getPackageInfo(getPackageName(), 0); + } + return packageInfo.versionName; + + //PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0); + //3,获取版本名称 + //return packageInfo.versionName; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } } \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/Activity_ExamOnline.java b/app/src/main/java/com/rehome/zhdcoa/ui/activity/Activity_ExamOnline.java index 240693c..adc45bb 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/Activity_ExamOnline.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/Activity_ExamOnline.java @@ -35,6 +35,7 @@ import java.util.ArrayList; import java.util.List; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentPagerAdapter; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.viewpager.widget.ViewPager; import okhttp3.MediaType; import okhttp3.RequestBody; @@ -226,7 +227,8 @@ public class Activity_ExamOnline extends BaseActivity { //刷新培训考试列表界面 Intent intent = new Intent(Contans.REFRESH_LIST_EXAM_DATA); intent.putExtra("id", id); - sendBroadcast(intent); + LocalBroadcastManager.getInstance(context).sendBroadcast(intent); + timer.cancel(); finish(); } @@ -359,7 +361,7 @@ public class Activity_ExamOnline extends BaseActivity { //刷新培训考试列表界面 Intent intent = new Intent(Contans.REFRESH_LIST_EXAM_DATA); intent.putExtra("id", id); - sendBroadcast(intent); + LocalBroadcastManager.getInstance(context).sendBroadcast(intent); } } } diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DJPXinfoMoreActivity.java b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DJPXinfoMoreActivity.java index 5a94692..de6809e 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DJPXinfoMoreActivity.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DJPXinfoMoreActivity.java @@ -70,7 +70,7 @@ public class DJPXinfoMoreActivity extends BaseActivity { private String videoPath = "/mnt/sdcard/documents/"; private String videoName = "test.flv"; - private Integer x5DownloadProgress = 0; + //private Integer x5DownloadProgress = 0; private void findView() { kcmcTx = findViewById(R.id.kcmc_tx); @@ -134,27 +134,6 @@ public class DJPXinfoMoreActivity extends BaseActivity { filedataBeans = new ArrayList<>(); dialogDatas = new ArrayList<>(); - - //注册广播接收, 监听X5内核下载进度 - IntentFilter intentFilter = new IntentFilter("X5DownloadProgress"); - registerReceiver(new BroadcastReceiver() { - - @Override - public void onReceive(Context context, Intent intent) { - String progress = intent.getStringExtra("progress"); - if (progress != null) { - x5DownloadProgress = Integer.valueOf(progress); - } - } - }, intentFilter); - //注册广播接收, 监听X5内核安装完成 - IntentFilter intentFilterX5Install = new IntentFilter("X5InstallFinish"); - registerReceiver(new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - - } - }, intentFilterX5Install); } @Override diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/ExamInfoDetailActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/ExamInfoDetailActivity.kt index e582a95..d6baed8 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/ExamInfoDetailActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/ExamInfoDetailActivity.kt @@ -5,8 +5,10 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.os.Build import android.util.Log import android.view.View +import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.rehome.zhdcoa.App import com.rehome.zhdcoa.Contans import com.rehome.zhdcoa.R @@ -20,8 +22,11 @@ import com.yolanda.nohttp.NoHttp import com.yolanda.nohttp.RequestMethod import com.yolanda.nohttp.rest.Response + class ExamInfoDetailActivity : BaseActivityOaToolbarViewBinding() { + private lateinit var localBroadcastManager: LocalBroadcastManager + //考试数据 private var produceExamDatas: MutableList? = mutableListOf() private lateinit var mIntent: Intent @@ -256,7 +261,17 @@ class ExamInfoDetailActivity : BaseActivityOaToolbarViewBinding= Build.VERSION_CODES.TIRAMISU){ +// // 这个私有广播接收器不能够接收来自其他应用的广播。 +// registerReceiver(myReceiver, filter, RECEIVER_NOT_EXPORTED) +// }else{ +// registerReceiver(myReceiver, filter) +// } } @@ -271,7 +286,9 @@ class ExamInfoDetailActivity : BaseActivityOaToolbarViewBinding + Log.i(TAG, "init: I100: update info $info") + if (info.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE){ + Log.i(TAG, "I100: init: have update available") + } else { + Log.i(TAG, "I100: init: no update available") + } + } + appUpdateManager.registerListener(this) + } + private fun startUpdate(info: AppUpdateInfo, type: Int){ + try { + + appUpdateManager.startUpdateFlowForResult(info,type,parentActivity, SELF_UPDATE_REQUEST_CODE) + currentType = type + }catch (exception:Exception){ + Log.i(TAG, exception.message.toString()) + } + } + fun onResume(){ + appUpdateManager.appUpdateInfo.addOnSuccessListener { info-> + if(currentType == AppUpdateType.FLEXIBLE){ + if(info.installStatus() == InstallStatus.DOWNLOADED) + flexibleUpdateDownloadCompleted() + } else if (currentType == AppUpdateType.IMMEDIATE){ + if(info.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) { + startUpdate(info, AppUpdateType.IMMEDIATE) + } + } + } + } + fun onActivityResult(requestCode: Int, resultCode: Int){ + + if(requestCode == SELF_UPDATE_REQUEST_CODE){ + if(resultCode != AppCompatActivity.RESULT_OK){ + Log.i("app","Update flow failed: $resultCode") + } + } + } + fun checkForUpdates(){ + + } + private fun flexibleUpdateDownloadCompleted(){ +// Snackbar.make( +// (parentActivity as MainActivity).binding.appBarMain.coordinatorLayout, +// "An app update has just been downloaded. Please restart app.", +// Snackbar.LENGTH_INDEFINITE +// ).apply { +// setAction("RESTART") { appUpdateManager.completeUpdate()} +// setActionTextColor(Color.WHITE) +// show() +// } + } + fun onDestroy(){ + appUpdateManager.unregisterListener(this) + } + override fun onStateUpdate(state: InstallState) { + if(state.installStatus() == InstallStatus.DOWNLOADED){ + flexibleUpdateDownloadCompleted() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt index efb69a0..eab58f8 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt @@ -24,9 +24,13 @@ import com.rehome.zhdcoa.bean.UserInfoBean import com.rehome.zhdcoa.databinding.ActivityLoginBinding import com.rehome.zhdcoa.ui.toastview.toastviewbymyself import com.rehome.zhdcoa.utils.* + + import com.xiaomi.mipush.sdk.MiPushClient -import com.yanzhenjie.permission.AndPermission -import com.yanzhenjie.permission.runtime.Permission +//import com.yanzhenjie.permission.AndPermission +//import com.yanzhenjie.permission.runtime.Permission + + import com.yolanda.nohttp.NoHttp import com.yolanda.nohttp.RequestMethod import com.yolanda.nohttp.rest.Response @@ -127,13 +131,16 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { @SuppressLint("SetTextI18n") override fun initData() { binding.tvVersionCode.text = getString(R.string.version_code) + getVersionName() - AndPermission.with(this).runtime().permission( - Permission.READ_PHONE_STATE, - Permission.READ_EXTERNAL_STORAGE, - Permission.WRITE_EXTERNAL_STORAGE, - Permission.CAMERA - ).onGranted { }.onDenied { } - .start() + + +// AndPermission.with(this).runtime().permission( +// Permission.READ_PHONE_STATE, +// Permission.READ_EXTERNAL_STORAGE, +// Permission.WRITE_EXTERNAL_STORAGE, +// Permission.CAMERA +// ).onGranted { }.onDenied { } +// .start() + val UserIDTemp = SPUtils.get(context, Contans.SP.USER_NAME, "") as String val UserPwdTemp = SPUtils.get(context, Contans.SP.PASS_WORD, "") as String @@ -151,8 +158,16 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { if (BuildConfig.LOG_ERROR) { // 管理员 - binding.etUsername.setText("ZHPS_Admin") - binding.etPassword.setText("Rehome.zhps@996") +// binding.etUsername.setText("ZHPS_Admin") +// binding.etPassword.setText("Rehome.zhps@996") + +// binding.etUsername.setText("310287") +// binding.etPassword.setText("He200002@") + + binding.etUsername.setText("310148") + binding.etPassword.setText("ZZZHdc4321.") + + } diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt index 1c10a2b..0f35104 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/MainActivity.kt @@ -14,6 +14,7 @@ import android.widget.RadioGroup import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentPagerAdapter +import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.viewpager.widget.ViewPager import com.azhon.appupdate.listener.OnButtonClickListener import com.azhon.appupdate.listener.OnDownloadListener @@ -311,7 +312,7 @@ class MainActivity : BaseActivityOaToolbarViewBinding() { .component!!.className intent.putExtra("className", launchClassName) intent.putExtra("notificationNum", number) - context.sendBroadcast(intent) + LocalBroadcastManager.getInstance( context ).sendBroadcast(intent) } catch (e: java.lang.Exception) { e.printStackTrace() } diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/MipcaActivityCapture.java b/app/src/main/java/com/rehome/zhdcoa/ui/activity/MipcaActivityCapture.java index 48620f7..c780d0e 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/MipcaActivityCapture.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/MipcaActivityCapture.java @@ -1,6 +1,8 @@ package com.rehome.zhdcoa.ui.activity; +import android.Manifest; import android.content.Intent; +import android.content.pm.PackageManager; import android.content.res.AssetFileDescriptor; import android.graphics.Bitmap; import android.media.AudioManager; @@ -11,6 +13,11 @@ import android.os.Vibrator; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + import com.google.zxing.BarcodeFormat; import com.google.zxing.Result; import com.rehome.zhdcoa.R; @@ -19,8 +26,6 @@ import com.rehome.zhdcoa.zxing.camera.CameraManager; import com.rehome.zhdcoa.zxing.decoding.CaptureActivityHandler; import com.rehome.zhdcoa.zxing.decoding.InactivityTimer; import com.rehome.zhdcoa.zxing.view.ViewfinderView; -import com.yanzhenjie.permission.AndPermission; -import com.yanzhenjie.permission.runtime.Permission; import java.io.IOException; import java.util.Vector; @@ -30,6 +35,9 @@ import java.util.Vector; public class MipcaActivityCapture extends BaseActivity2 implements SurfaceHolder.Callback { + private static final int CAMERA_REQUEST_CODE = 3;//请求码 + + private SurfaceHolder mSurfaceHolder; private CaptureActivityHandler handler; private ViewfinderView viewfinderView; @@ -152,17 +160,7 @@ public class MipcaActivityCapture extends BaseActivity2 implements SurfaceHolder public void surfaceCreated(SurfaceHolder holder) { if (!hasSurface) { hasSurface = true; - AndPermission.with(this) - .runtime() - .permission(Permission.CAMERA) - .onGranted(permissions -> { - initCamera(holder); - }) - .onDenied(permissions -> { - Toast.makeText(MipcaActivityCapture.this, "没有权限,请到设置-权限管理中开启", Toast.LENGTH_SHORT).show(); - finish(); - }) - .start(); + checkPermission(holder); } } @@ -173,6 +171,43 @@ public class MipcaActivityCapture extends BaseActivity2 implements SurfaceHolder } + + private void checkPermission(SurfaceHolder surfaceHolder) { + /** + * 检测 设备是否支持闪光灯 + */ + if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) { + showToast("设备没有闪光灯,无法开启手电筒"); + return; + } + + this.mSurfaceHolder = surfaceHolder; + + //动态权限申请 + if (ContextCompat.checkSelfPermission(MipcaActivityCapture.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { + //权限请求 + ActivityCompat.requestPermissions(MipcaActivityCapture.this, new String[]{Manifest.permission.CAMERA}, CAMERA_REQUEST_CODE); + } else { + initCamera(surfaceHolder); + } + } + + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (CAMERA_REQUEST_CODE==requestCode){ + if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED) { + checkPermission(this.mSurfaceHolder); + }else { + //权限拒绝 + Toast.makeText(MipcaActivityCapture.this, "没有权限,请到设置-权限管理中开启", Toast.LENGTH_SHORT).show(); + finish(); + } + } + } + + public ViewfinderView getViewfinderView() { return viewfinderView; } diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/ProduceStudyInfoMoreActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/ProduceStudyInfoMoreActivity.kt index 40c30be..be2a523 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/ProduceStudyInfoMoreActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/ProduceStudyInfoMoreActivity.kt @@ -7,6 +7,7 @@ import android.view.View import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts +import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.google.gson.Gson import com.rehome.zhdcoa.Contans import com.rehome.zhdcoa.R @@ -437,8 +438,7 @@ class ProduceStudyInfoMoreActivity : if (resultCode == RESULT_OK) { val intent = Intent(Contans.ACTION_REFLASH_PRODUCE_FRAGMENT) //发送广播,刷新页面 - //发送广播,刷新页面 - sendBroadcast(intent) + LocalBroadcastManager.getInstance(context).sendBroadcast(intent) } } } diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/TrainInfoMoreActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/TrainInfoMoreActivity.kt index 5e498c0..f8ae895 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/TrainInfoMoreActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/TrainInfoMoreActivity.kt @@ -86,23 +86,6 @@ class TrainInfoMoreActivity : BaseActivityOaToolbarViewBinding() { private var kslb_id: kotlin.String? = null private var datas: MutableList = mutableListOf() + private lateinit var localBroadcastManager: LocalBroadcastManager + private val myReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val action = intent.action @@ -65,7 +69,17 @@ class ExamFragment : BaseViewBindingFragment() { val filter = IntentFilter() filter.addAction(Contans.REFRESH_LIST_EXAM_DATA) - requireActivity().registerReceiver(myReceiver, filter) + + //注册广播接收器 + localBroadcastManager = LocalBroadcastManager.getInstance( context ) + localBroadcastManager.registerReceiver( myReceiver , filter ) + +// if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){ +// // 这个私有广播接收器不能够接收来自其他应用的广播。 +// requireActivity().registerReceiver(myReceiver, filter, Context.RECEIVER_NOT_EXPORTED) +// }else{ +// requireActivity().registerReceiver(myReceiver, filter) +// } setAdapter() getValidExamTrainList() @@ -77,7 +91,9 @@ class ExamFragment : BaseViewBindingFragment() { override fun onDestroy() { super.onDestroy() - requireActivity().unregisterReceiver(myReceiver) + //requireActivity().unregisterReceiver(myReceiver) + //取消注册广播,防止内存泄漏 + localBroadcastManager.unregisterReceiver( myReceiver ); } private fun getValidExamTrainList() { @@ -142,7 +158,7 @@ class ExamFragment : BaseViewBindingFragment() { val intent = Intent(Contans.REFRESH_LIST_EXAM_DETAIL_DATA) intent.putExtra("item", Gson().toJson(item)) - requireActivity().sendBroadcast(intent) + localBroadcastManager.sendBroadcast(intent) } } } diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/ProduceFragment.kt b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/ProduceFragment.kt index 75bed35..6cabc68 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/ProduceFragment.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/ProduceFragment.kt @@ -2,13 +2,17 @@ package com.rehome.zhdcoa.ui.fragment import android.content.BroadcastReceiver import android.content.Context +import android.content.Context.RECEIVER_NOT_EXPORTED import android.content.Intent import android.content.IntentFilter +import android.os.Build import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.AdapterView +import androidx.annotation.RequiresApi +import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.rehome.zhdcoa.App import com.rehome.zhdcoa.Contans import com.rehome.zhdcoa.adapter.ProduceStudyAdapter @@ -32,20 +36,34 @@ import com.yolanda.nohttp.rest.Response */ class ProduceFragment : BaseViewBindingFragment() { private val kstype = "1" - private var times:String = "" - private var timee:String = "" - private var kslb_id:String? = null + private var times: String = "" + private var timee: String = "" + private var kslb_id: String? = null private var datas: MutableList = mutableListOf() private lateinit var produceStudyAdapter: ProduceStudyAdapter + private lateinit var localBroadcastManager: LocalBroadcastManager - override fun getBinding(inflater: LayoutInflater, container: ViewGroup?)= FragmentProduceBinding.inflate(inflater) + override fun getBinding(inflater: LayoutInflater, container: ViewGroup?) = + FragmentProduceBinding.inflate(inflater) + + @RequiresApi(Build.VERSION_CODES.O) override fun initView() { //注册广播,刷新页面 val filter = IntentFilter() filter.addAction(Contans.ACTION_REFLASH_PRODUCE_FRAGMENT) - requireActivity().registerReceiver(myReceiver, filter) + + //注册广播接收器 + localBroadcastManager = LocalBroadcastManager.getInstance(context); + localBroadcastManager.registerReceiver(myReceiver, filter) + +// if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){ +// // 这个私有广播接收器不能够接收来自其他应用的广播。 +// requireActivity().registerReceiver(myReceiver, filter,RECEIVER_NOT_EXPORTED) +// }else{ +// requireActivity().registerReceiver(myReceiver, filter) +// } binding.lvMemberNodata.visibility = View.VISIBLE binding.bottomBtn.setOnClickListener(View.OnClickListener { @@ -83,7 +101,7 @@ class ProduceFragment : BaseViewBindingFragment() { } } - private val myReceiver: BroadcastReceiver? = object : BroadcastReceiver() { + private val myReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val action = intent.action if (Contans.ACTION_REFLASH_PRODUCE_FRAGMENT == action) { @@ -94,37 +112,38 @@ class ProduceFragment : BaseViewBindingFragment() { override fun onDestroyView() { super.onDestroyView() - if (myReceiver != null) { - requireActivity().unregisterReceiver(myReceiver) - } + //requireActivity().unregisterReceiver(myReceiver) + //取消注册广播,防止内存泄漏 + localBroadcastManager.unregisterReceiver(myReceiver); } fun getProduceStudyData() { val username = App.getInstance().userInfo.manid val url = Contans.BASE_URL + Contans.PRODUCE_STUDY_DATA_URL + username val request = NoHttp.createStringRequest(url, RequestMethod.GET) - NohttpUtils.getInstance().addNoProgress(requireActivity(),0, request, object : HttpListener { - - override fun onSucceed(what: Int, response: Response?) { - Log.i("app", "----------------") - val result = response?.get() - Log.i("app", result?:"result is null") - val bean = GsonUtils.GsonToBean( - result, - ProduceStudyBean::class.java - ) - if (bean != null && bean.rows.size > 0) { - binding.lvMemberNodata.visibility = View.GONE - datas.clear() - datas.addAll(bean.rows) - produceStudyAdapter.notifyDataSetChanged() - } else { - showToast("无数据") - binding.lvMemberNodata.visibility = View.VISIBLE + NohttpUtils.getInstance() + .addNoProgress(requireActivity(), 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + Log.i("app", "----------------") + val result = response?.get() + Log.i("app", result ?: "result is null") + val bean = GsonUtils.GsonToBean( + result, + ProduceStudyBean::class.java + ) + if (bean != null && bean.rows.size > 0) { + binding.lvMemberNodata.visibility = View.GONE + datas.clear() + datas.addAll(bean.rows) + produceStudyAdapter.notifyDataSetChanged() + } else { + showToast("无数据") + binding.lvMemberNodata.visibility = View.VISIBLE + } } - } - override fun onFailed(what: Int, response: Response?) {} - }) + override fun onFailed(what: Int, response: Response?) {} + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/YunXingFragment.java b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/YunXingFragment.java index 80559f8..c8d163e 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/YunXingFragment.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/YunXingFragment.java @@ -1,17 +1,22 @@ package com.rehome.zhdcoa.ui.fragment; +import static android.content.Context.RECEIVER_NOT_EXPORTED; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; +import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + import com.rehome.zhdcoa.App; import com.rehome.zhdcoa.Contans; import com.rehome.zhdcoa.DBModel.AjhScInfo; @@ -74,10 +79,12 @@ import java.util.ArrayList; import java.util.List; public class YunXingFragment extends BaseFragment { + private static YunXingFragment instance = null; GridView gvYx; private final List beanList = new ArrayList<>(); private GridViewYXAdapter adapter; + private LocalBroadcastManager localBroadcastManager ; private MsgReceiver msgReceiver; private boolean isTask = false;//是否有任务 private final String[] str = {"设备巡点检", "移动仓库", "安健环巡查", "综合巡查", "行为安全观察", "工单录入", "巡视抄表", "定期工作", "设备报表查询"}; @@ -112,7 +119,19 @@ public class YunXingFragment extends BaseFragment { msgReceiver = new MsgReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.rehome.ydoa.RECEIVER"); - requireActivity().registerReceiver(msgReceiver, intentFilter); + + //注册广播接收器 + localBroadcastManager = LocalBroadcastManager.getInstance(mActivity) ; + localBroadcastManager.registerReceiver( msgReceiver , intentFilter ); + + + +// if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){ +// // 这个私有广播接收器不能够接收来自其他应用的广播。 +// requireActivity().registerReceiver(msgReceiver, intentFilter,RECEIVER_NOT_EXPORTED); +// }else{ +// requireActivity().registerReceiver(msgReceiver, intentFilter); +// } zys = new ArrayList<>(); @@ -565,7 +584,9 @@ public class YunXingFragment extends BaseFragment { @Override public void onDestroy() { - requireActivity().unregisterReceiver(msgReceiver); + //requireActivity().unregisterReceiver(msgReceiver); super.onDestroy(); + //取消注册广播,防止内存泄漏 + localBroadcastManager.unregisterReceiver( msgReceiver ); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index be148a0..a9e4569 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,6 +49,7 @@ TODOST 上传时间: 删除 + one hundred