master
hwf453 2 years ago
parent 15f478d592
commit e0ea540716

@ -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')
}

@ -40,7 +40,6 @@
android:name="android.hardware.telephony"
android:required="false" />
<permission-group android:name="${applicationId}.andpermission" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@ -456,6 +455,7 @@
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.XscbqyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.XscbqyWorkActivity"

@ -1,30 +0,0 @@
package com.rehome.zhdcoa.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;
public class NetworkStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager manager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobileInfo = manager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiInfo = manager .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo activeInfo = manager.getActiveNetworkInfo();
if (activeInfo==null) {
Toast.makeText( context, "当前网络不可用,请检查网络", Toast.LENGTH_SHORT) .show();
}else {
if (activeInfo.getTypeName().equals("mobile")) {
Toast.makeText( context, "mobile:" + mobileInfo.isConnected() +
"\nactive:" + activeInfo.getTypeName(), Toast.LENGTH_SHORT) .show();
}
if (activeInfo.getTypeName().equals("wifi")) {
Toast.makeText( context, "wifi:" + wifiInfo.isConnected() +
"\nactive:" + activeInfo.getTypeName(), Toast.LENGTH_SHORT) .show();
}
}
}
}

@ -8,8 +8,11 @@ import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.orhanobut.logger.Logger;
import com.rehome.zhdcoa.Contans;
@ -23,6 +26,7 @@ public class BackUploadService extends Service {
public BackUploadService() {
}
private LocalBroadcastManager localBroadcastManager ;
// 实时监听网络状态改变
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@ -70,10 +74,21 @@ public class BackUploadService extends Service {
}
@Override
public void onCreate() {// 注册广播
public void onCreate() {
// 注册广播
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); // 添加接收网络连接状态改变的Action
registerReceiver(mReceiver, mFilter);
//注册广播接收器
localBroadcastManager = LocalBroadcastManager.getInstance(this) ;
localBroadcastManager.registerReceiver( mReceiver , mFilter );
// if(Build.VERSION.SDK_INT >= 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

@ -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;
}
}

@ -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);
}
}
}

@ -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

@ -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<ActivityExamInfoDetailBinding>() {
private lateinit var localBroadcastManager: LocalBroadcastManager
//考试数据
private var produceExamDatas: MutableList<ExerciseKstmBean.RowsBean?>? = mutableListOf()
private lateinit var mIntent: Intent
@ -256,7 +261,17 @@ class ExamInfoDetailActivity : BaseActivityOaToolbarViewBinding<ActivityExamInfo
})
val filter = IntentFilter()
filter.addAction(Contans.REFRESH_LIST_EXAM_DETAIL_DATA)
registerReceiver(myReceiver, filter)
//注册广播接收器
localBroadcastManager = LocalBroadcastManager.getInstance( this )
localBroadcastManager.registerReceiver( myReceiver , filter )
// if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
// // 这个私有广播接收器不能够接收来自其他应用的广播。
// registerReceiver(myReceiver, filter, RECEIVER_NOT_EXPORTED)
// }else{
// registerReceiver(myReceiver, filter)
// }
}
@ -271,7 +286,9 @@ class ExamInfoDetailActivity : BaseActivityOaToolbarViewBinding<ActivityExamInfo
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(myReceiver)
//unregisterReceiver(myReceiver)
//取消注册广播,防止内存泄漏
localBroadcastManager.unregisterReceiver( myReceiver );
}

@ -0,0 +1,89 @@
package com.rehome.zhdcoa.ui.activity
import android.app.Activity
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.google.android.play.core.appupdate.AppUpdateInfo
import com.google.android.play.core.appupdate.AppUpdateManager
import com.google.android.play.core.appupdate.AppUpdateManagerFactory
import com.google.android.play.core.install.InstallState
import com.google.android.play.core.install.InstallStateUpdatedListener
import com.google.android.play.core.install.model.AppUpdateType
import com.google.android.play.core.install.model.InstallStatus
import com.google.android.play.core.install.model.UpdateAvailability
import java.lang.Exception
class InAppUpdate(activity: Activity): InstallStateUpdatedListener {
var TAG = javaClass.simpleName
private var appUpdateManager: AppUpdateManager
private var parentActivity: Activity = activity
private var currentType = AppUpdateType.FLEXIBLE
private var SELF_UPDATE_REQUEST_CODE = 1
init {
Log.i(TAG, "init: I100: Init InAppUpdate")
appUpdateManager = AppUpdateManagerFactory.create(parentActivity)
appUpdateManager.appUpdateInfo.addOnSuccessListener { info->
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()
}
}
}

@ -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<ActivityLoginBinding>() {
@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<ActivityLoginBinding>() {
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.")
}

@ -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<ActivityMainBinding>() {
.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()
}

@ -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;
}

@ -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)
}
}
}

@ -86,23 +86,6 @@ class TrainInfoMoreActivity : BaseActivityOaToolbarViewBinding<ActivityTrainInfo
binding.xxxdEdit.isSingleLine = false
binding.xxxdEdit.setHorizontallyScrolling(false)
binding.xxxdEdit.setText("00:00")
//注册广播接收, 监听X5内核安装完成
//注册广播接收, 监听X5内核安装完成
val intentFilterX5Install = IntentFilter("X5InstallFinish")
registerReceiver(object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val dialog1 = AuditDialog(context,
"文件预览内核初始化完成,请关闭APP后重新打开文档预览、视频播放才能正常使用",
object : AuditDialog.AuditDialogListener {
override fun confirm() {}
override fun cancel() {}
})
dialog1.show()
}
}, intentFilterX5Install)
}
override fun initData() {

@ -259,5 +259,17 @@ public class XscbqyActivity extends BaseActivity2 {
requestDatas();
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 在此处保存需要恢复的数据
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// 在此处恢复保存的数据
}
}

@ -4,11 +4,13 @@ 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.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.google.gson.Gson
import com.rehome.zhdcoa.App
import com.rehome.zhdcoa.Contans
@ -36,6 +38,8 @@ class ExamFragment : BaseViewBindingFragment<FragmentExamBinding>() {
private var kslb_id: kotlin.String? = null
private var datas: MutableList<GetKsLbBean.RowsBean> = 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<FragmentExamBinding>() {
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<FragmentExamBinding>() {
override fun onDestroy() {
super.onDestroy()
requireActivity().unregisterReceiver(myReceiver)
//requireActivity().unregisterReceiver(myReceiver)
//取消注册广播,防止内存泄漏
localBroadcastManager.unregisterReceiver( myReceiver );
}
private fun getValidExamTrainList() {
@ -142,7 +158,7 @@ class ExamFragment : BaseViewBindingFragment<FragmentExamBinding>() {
val intent =
Intent(Contans.REFRESH_LIST_EXAM_DETAIL_DATA)
intent.putExtra("item", Gson().toJson(item))
requireActivity().sendBroadcast(intent)
localBroadcastManager.sendBroadcast(intent)
}
}
}

@ -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
@ -38,14 +42,28 @@ class ProduceFragment : BaseViewBindingFragment<FragmentProduceBinding>() {
private var datas: MutableList<ProduceStudyBean.RowsBean> = 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<FragmentProduceBinding>() {
}
}
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,16 +112,17 @@ class ProduceFragment : BaseViewBindingFragment<FragmentProduceBinding>() {
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<String?> {
NohttpUtils.getInstance()
.addNoProgress(requireActivity(), 0, request, object : HttpListener<String?> {
override fun onSucceed(what: Int, response: Response<String?>?) {
Log.i("app", "----------------")

@ -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<GridViewBean> 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 );
}
}

@ -49,6 +49,7 @@
<string name="todost">TODOST</string>
<string name="tv_xlt_img_video_upsj">上传时间:</string>
<string name="whp_delete">删除</string>
<string name="permission_name_call_log">one hundred</string>
</resources>

Loading…
Cancel
Save