添加log and crash 保存本地,分享。

This commit is contained in:
2025-11-11 10:48:20 +08:00
parent 0aca66ce84
commit 8d983bfa99
20 changed files with 231 additions and 130 deletions

View File

@@ -51,7 +51,6 @@ public class MyConverterFactory extends Converter.Factory {
public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type));
return new ResponseBodyConverter<>(gson, adapter);
// return new ResponseBodyConverter<>(gson, TypeToken.get(type));
}
}

View File

@@ -109,7 +109,6 @@ public class RetrofitClient {
sslContext.init(null, new TrustManager[]{trustAllCert}, new SecureRandom());
final OkHttpClient client = new OkHttpClient.Builder()
// .addInterceptor(new LogInterceptor())
.addInterceptor(new DataLoggingInterceptor(new DataLogger()))
.addInterceptor(new AccessTokenInterceptor(headers))
.proxy(Proxy.NO_PROXY)
@@ -129,31 +128,15 @@ public class RetrofitClient {
private Retrofit provideRetrofit(OkHttpClient client) {
return new Retrofit.Builder()
.addConverterFactory(MyConverterFactory.create())/**/
.addConverterFactory(MyConverterFactory.create())
// .addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
// .baseUrl("http://chat.qxmier.com/")
.baseUrl(CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl())
.client(client)
.build();
}
// private static Retrofit mRainRetrofit;
//
// public static Retrofit getRainRetrofit() {
// if (mRainRetrofit == null) {
// synchronized (RetrofitClient.class) {
// mRainRetrofit = new Retrofit.Builder()
// .addConverterFactory(RainConverterFactory.create())
// .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
// .baseUrl(BuildConfig.RAIN_GAME_BASE_URL)
// .client(client)
// .build();
// }
// }
// return mRainRetrofit;
// }
private RetrofitClient() {
mRetrofit = provideRetrofit(provideOkHttpClient());
@@ -201,11 +184,6 @@ public class RetrofitClient {
return mRetrofit.create(apiClientClass);
}
public void login() {
// login("18473492252", "123456");
// login("18229732986", "123456");
}
public void appUpdate(BaseObserver<AppUpdateModel> observer) {
sApiServer.appUpdate().compose(new DefaultTransformer<>()).subscribe(observer);
}
@@ -2808,7 +2786,6 @@ public class RetrofitClient {
}
public void firstChargeGift(BaseObserver<FirstChargeGiftBean> observer) {
// sApiServer.firstChargeGift().compose(new DefaultTransformer<>()).subscribe(observer);
sApiServer.firstChargeGift().enqueue(new Callback<BaseModel<FirstChargeGiftBean>>() {
@Override
public void onResponse(Call<BaseModel<FirstChargeGiftBean>> call, Response<BaseModel<FirstChargeGiftBean>> response) {

View File

@@ -28,7 +28,7 @@ public enum EnvironmentEnum {
1600096890,
"02f7339ec98947deaeab173599891932",
"tcp://1.13.181.248",
"https://test.vespa.xscmmidi.site/h5",
"https://test.vespa.qxyushen.top/h5",
1);
private final String serverUrl;//服务器地址

View File

@@ -2,6 +2,8 @@ package com.xscm.moduleutil.utils.logger;
import androidx.annotation.Nullable;
import com.blankj.utilcode.util.LogUtils;
/**
* SCore
* Created by ShangChuanliang
@@ -61,7 +63,9 @@ public final class DataLogger implements DataLoggingInterceptor.Logger {
}
// 响应结束,打印整条日志
if (message.startsWith(DataLoggingInterceptor.sLogEndFlag)) {
LogUtil.d(mMessage.toString());
if (mMessage.toString().contains("https://test.vespa.xscmmidi.site/api/Xintiao/keep_xintiao"))
return;
LogUtils.d(mMessage.toString());
return;
}

View File

@@ -195,6 +195,16 @@
android:exported="true" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>

View File

@@ -1,14 +1,10 @@
package com.xscm.modulemain
import android.content.Context
import com.blankj.utilcode.util.CrashUtils
import com.blankj.utilcode.util.LogUtils
import com.opensource.svgaplayer.utils.log.SVGALogger
import com.scwang.smartrefresh.layout.SmartRefreshLayout
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator
import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator
import com.scwang.smartrefresh.layout.api.RefreshFooter
import com.scwang.smartrefresh.layout.api.RefreshHeader
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.footer.ClassicsFooter
import com.scwang.smartrefresh.layout.header.ClassicsHeader
import com.xscm.modulemain.widget.WheatLayoutSingManager
@@ -17,17 +13,67 @@ import com.xscm.moduleutil.base.CommonAppContext
open class Application : CommonAppContext() {
var APP_CONENT = ""
var LOGUTILS_SAVE_PATH = ""
var CRASHUTILS_SAVE_PATH = ""
// 单例实例
companion object {
@Volatile
private lateinit var instance: Application
// 全局获取 Application 实例
fun getInstance(): Application {
return instance
}
// 获取 Application Context避免内存泄漏
fun getContext(): Context {
return instance.applicationContext
}
}
override fun onCreate() {
super.onCreate()
LOGUTILS_SAVE_PATH = getExternalFilesDir("APP_CONTENT/APP_LOG")?.absolutePath.toString()
CRASHUTILS_SAVE_PATH = getExternalFilesDir("APP_CONTENT/APP_CRASH")?.absolutePath.toString()
getExternalFilesDir("")
APP_CONENT = getExternalFilesDir("APP_CONTENT")?.absolutePath.toString()
// 初始化单例实例
instance = this
// 初始化并预绘制视图 二卡八列
WheatLayoutSingManager.init(this)
WheatLayoutSingManager.getInstance().setWheatData( null)
WheatLayoutSingManager.getInstance().setWheatData(null)
// 默认情况下SVGA 内部不会输出任何 log所以需要手动设置为 true
SVGALogger.setLogEnabled(false)
LogUtils.getConfig().isLogSwitch = true
initLogUtils()
initCrashUtils()
initSmartRefreshLayout()
}
private fun initLogUtils() {
LogUtils.getConfig()
.setLogSwitch(true) // 全局开关
.setLog2FileSwitch(true) // 必须设为 true
.setDir(LOGUTILS_SAVE_PATH) // 设置有效路径
.setFileFilter(LogUtils.V); // 允许所有级别
}
private fun initCrashUtils() {
CrashUtils.init(CRASHUTILS_SAVE_PATH, object : CrashUtils.OnCrashListener {
override fun onCrash(crashInfo: CrashUtils.CrashInfo?) {
LogUtils.e("crash", crashInfo.toString())
}
})
}
private fun initSmartRefreshLayout() {
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, _ ->
val header = ClassicsHeader(context)
@@ -49,4 +95,9 @@ open class Application : CommonAppContext() {
}
}
fun getAppContent(): String {
return APP_CONENT
}
}

View File

@@ -1366,7 +1366,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} else if (msgType == EMMessageInfo.QXRoomMessageTypeRoomIsHostvalue) {
roomFragment!!.handleMsgType1028(messageEvent)
} else if (msgType == EMMessageInfo.QXRoomMessageTypezailx) {
var userId = messageEvent!!.text!!.user_id!!
val userId = messageEvent.text?.user_id
LogUtils.e("messageEvent!!.text.type" + messageEvent.text.type)
CommonAppContext.getInstance().onlineMap[userId ?: ""] = messageEvent.text.type
if (mRoomInfoResp != null && mRoomInfoResp!!.room_info != null) {
@@ -1388,19 +1388,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
CommonAppContext.getInstance().getOnlineMap()
} else if (msgType == EMMessageInfo.QXRoomMessageTypeQingGRMl) { // 1059清除个人魅力 1058在离线
if (mRoomInfoResp != null && mRoomInfoResp!!.room_info != null) {
if (mRoomInfoResp!!.room_info.type_id == "1" || mRoomInfoResp!!.room_info.type_id == "3" ||
mRoomInfoResp!!.room_info.type_id == "4" || mRoomInfoResp!!.room_info.type_id == "8"
) {
if (mRoomInfoResp!!.room_info.label_id == "1") {
roomFragment!!.handleRoomMessage(messageEvent)
} else {
roomFragment!!.handleRoomMessage(messageEvent)
}
} else if (mRoomInfoResp!!.room_info.type_id == "2") {
roomFragment!!.handleRoomMessage(messageEvent)
} else if (mRoomInfoResp!!.room_info.type_id == "7") {
roomFragment!!.handleRoomMessage(messageEvent)
}
}
} else if (msgType == EMMessageInfo.QXRoomMessageTypeMangH) { // 1056 抽奖结果
val dialog = supportFragmentManager

View File

@@ -11,16 +11,10 @@ import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupWindow;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.orhanobut.logger.Logger;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.room.activity.RoomActivity;
@@ -49,7 +43,6 @@ import com.xscm.moduleutil.utils.ClickUtils;
import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.utils.StringUtil;
import com.xscm.moduleutil.widget.RoomFriendshipWheatView;
import com.xscm.moduleutil.widget.SharedViewModel;
import java.util.ArrayList;
import java.util.HashMap;
@@ -174,11 +167,6 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
return new FriendshipRoomPresenter(this, getActivity());
}
@Override
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
}
@Override
protected void initData() {
@@ -366,7 +354,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
// 2. 邀请用户上麦
// 3. 锁定/解锁麦位等
pitNumber = pitBean.getPit_number();
if (cheackWether(pitBean.getPit_number())) {
if (checkWeather(pitBean.getPit_number())) {
showPopupMenu(wheatView); // v 是点击的按钮视图
} else if (pitBean.getPit_number().equals("10")) {
RoomOnlineDialogFragment.show(roomId, "10", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
@@ -653,7 +641,6 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
if (pitBean7.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean7.setIs_online(type == 1 ? 1 : 2);
mBinding.wheatView6.setData(pitBean7);
return;
}
}
@@ -707,7 +694,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
});
}
private boolean cheackWether(String pitNumber) {
private boolean checkWeather(String pitNumber) {
if (roomInfoResp.getRoom_info().getRoom_up_pit_type().equals("1")) {//排麦模式
if (roomInfoResp.getUser_info().getIs_management() == 1 || roomInfoResp.getUser_info().getIs_host() == 1 || roomInfoResp.getUser_info().getIs_room_owner() == 1) {
if (pitNumber.equals("9")) {
@@ -1118,7 +1105,6 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
mBinding.wheatView6.setLockZl(false);
}
// assert md3 != null;
if (md3 != null && md3.getHeartNum() > 0) {
if (mBinding.wheatView3.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
mBinding.wheatView3.setLockZl(false);

View File

@@ -1,16 +1,11 @@
package com.xscm.modulemain.activity.room.fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LinearInterpolator;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.LogUtils;
@@ -19,13 +14,13 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.room.activity.RoomActivity;
import com.xscm.modulemain.activity.room.contacts.RoomContacts;
import com.xscm.modulemain.activity.room.presenter.RoomPresenter;
import com.xscm.modulemain.databinding.FragmentRoomKtvBinding;
import com.xscm.modulemain.dialog.RoomCharmDialog;
import com.xscm.modulemain.dialog.RoomGiftDialogFragment;
import com.xscm.modulemain.dialog.RoomOnlineDialogFragment;
import com.xscm.modulemain.dialog.RoomUserInfoFragment;
import com.xscm.modulemain.activity.room.contacts.RoomContacts;
import com.xscm.modulemain.activity.room.presenter.RoomPresenter;
import com.xscm.modulemain.dialog.TunerDialogFragment;
import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.bean.MusicSongBean;
@@ -46,9 +41,7 @@ import com.xscm.moduleutil.utils.ClickUtils;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.widget.RoomKtvWheatView;
import com.xscm.moduleutil.widget.SharedViewModel;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@@ -88,14 +81,10 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
public View getNegativeMarginView() {
return mBinding.muZc;
}
public void roomInfoUpdate(RoomInfoResp resp) {
roomInfoResp = resp;
// upData();
}
private void upData() {
@@ -166,7 +155,7 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
mBinding.muXName.setText(roomInfoResp.getNextInfo().getSong_name());
}
if (roomInfoResp.getRoom_info().getPit_list() != null && roomInfoResp.getRoom_info().getPit_list().size() > 0) {
if (roomInfoResp.getRoom_info().getPit_list() != null && !roomInfoResp.getRoom_info().getPit_list().isEmpty()) {
for (RoomPitBean roomPitBean : roomInfoResp.getRoom_info().getPit_list()) {
if (roomPitBean.getPit_number().equals("9")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
@@ -192,7 +181,7 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
}
if (roomInfoResp.getSong_pit_list() != null && roomInfoResp.getSong_pit_list().size() > 0) {
if (roomInfoResp.getSong_pit_list() != null && !roomInfoResp.getSong_pit_list().isEmpty()) {
adapter.setNewData(roomInfoResp.getSong_pit_list());
for (RoomPitBean roomPitBean : roomInfoResp.getSong_pit_list()) {
if (roomPitBean.getUser_id().equals(SpUtil.getUserId() + "")) {

View File

@@ -18,16 +18,12 @@ import com.xscm.moduleutil.widget.dialog.BaseDialog;
*@description: 房间公告展示
*/
public class RoomNoticeDialogFragment extends BaseDialog {
private Context mContext;
private TextView tvTile;
private TextView tvContent;
private ImageView ivClose;
String title, content;
public RoomNoticeDialogFragment(@NonNull Context context) {
super(context);
this.mContext = context;
}
@Override

View File

@@ -170,11 +170,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
return; // 快速重复点击,直接返回
}
RoomUserInfoFragment.show(roomId, pitBean.getUser_id(), pitBean.getPit_number(), getHostUser(), false, 3, isNumberWhether(), getChildFragmentManager());
// 点击的麦位是当前麦位
// 可以执行相应的操作,如显示提示信息或执行其他逻辑
} else {
// 点击的麦位不是当前麦位
// 可以执行相应的操作,如显示提示信息或执行其他逻辑
if (cheackWether(pitBean.getPit_number())) {
pitNumber = pitBean.getPit_number();
roomPitBean = pitBean;

View File

@@ -67,11 +67,11 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
private VoiceFragment voiceFragment;
public VoiceCategoryFragment () {
public VoiceCategoryFragment() {
}
public VoiceCategoryFragment (VoiceFragment voiceFragment){
public VoiceCategoryFragment(VoiceFragment voiceFragment) {
this.voiceFragment = voiceFragment;
}
@@ -79,7 +79,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
return new VoiceCategoryFragment(voiceFragment);
}
public void showLoading(){
public void showLoading() {
voiceFragment.isShowLoading(true);
}
@@ -126,7 +126,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
* type=1时该值表示房间idtype=2时表示文章id
*/
BannerModel bannerModel = (BannerModel) model;
Intent intent=new Intent(getActivity(), WebViewActivity.class);
Intent intent = new Intent(getActivity(), WebViewActivity.class);
intent.putExtra("url", bannerModel.getUrl());
intent.putExtra("title", "首页横幅");
startActivity(intent);
@@ -148,7 +148,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
// 示例:跳转到房间 详情页
if (data != null) {
showLoading();
RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), data.getRoom_id() ,"",null);
RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), data.getRoom_id(), "", null);
}
});
@@ -171,7 +171,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
String roomId = item.getRoom_id(); // 或者 item.getRoomId(); 确保方法名正确
if (roomId != null && !roomId.isEmpty()) { // 检查 roomId 是否有效
showLoading();
RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), roomId,"",null);
RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), roomId, "", null);
} else {
// Log.d(TAG, "Room ID is null or empty for item at position: " + position);
}
@@ -191,13 +191,13 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
});
mBinding.homeGg.setOnClickListener(v -> {
Intent intent=new Intent(getActivity(), OfficialNoticeActivity.class);
Intent intent = new Intent(getActivity(), OfficialNoticeActivity.class);
intent.putExtra("type", "2");
startActivity(intent);
});
mBinding.imX.setOnClickListener(v -> {
Intent intent=new Intent(getActivity(), PopularRoomActivity.class);
Intent intent = new Intent(getActivity(), PopularRoomActivity.class);
startActivity(intent);
});
}
@@ -225,10 +225,10 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
//// info.add(mqttBean.getList().getFromUserName() + "送给" + mqttBean.getList().getToUserName() + "\n" + mqttBean.getList().getGiftName());
// }
for (int i=0;i<cachedMqttBeans.size();i++){
for (int i = 0; i < cachedMqttBeans.size(); i++) {
mqttList.addAll(cachedMqttBeans.get(i).getList());
}
for (int i=0;i<mqttList.size();i++){
for (int i = 0; i < mqttList.size(); i++) {
info.add(mqttList.get(i).getFromUserName() + "送给" + mqttList.get(i).getToUserName() + "\n" + mqttList.get(i).getGiftName());
}
@@ -268,7 +268,8 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
// 创建适配器
MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getActivity(), list);
mBinding.viewPager.setAdapter(adapter);
if (!list.isEmpty())
mBinding.viewPager.setOffscreenPageLimit(list.size() - 1);
// 设置 TabLayout 与 ViewPager2 的关联
new TabLayoutMediator(mBinding.slidingTabLayout, mBinding.viewPager,
(tab, position) -> {
@@ -284,11 +285,9 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
if (position == 0) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
textView.setTextColor(getResources().getColor(android.R.color.white));
// customView.setBackgroundResource(com.xscm.moduleutil.R.drawable.tab_indicator);
} else {
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
textView.setTextColor(Color.parseColor("#F1ECFF"));
// customView.setBackgroundResource(com.xscm.moduleutil.R.drawable.tab_unselected_background);
}
tab.setCustomView(customView);
@@ -309,12 +308,11 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
textView.setTextColor(getResources().getColor(android.R.color.white));
}
// customView.setBackgroundResource(com.xscm.moduleutil.R.drawable.tab_indicator);
}
RoomTypeModel roomTypeModel = list.get(position);
String categoryId = roomTypeModel.getId();
HotListFragment.newInstance(VoiceCategoryFragment.this,categoryId, TYPE_INDEX);
HotListFragment.newInstance(VoiceCategoryFragment.this, categoryId, TYPE_INDEX);
}
}
@@ -356,12 +354,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
@Override
public void setTopRoom(List<TopRoom> topRooms, int type) {
// if (topRooms == null || topRooms.isEmpty() || topRooms.size() < 1) {
// mBinding.constraintLayout.setVisibility(View.GONE);
// return;
// }else {
mBinding.constraintLayout.setVisibility(View.VISIBLE);
// }
roomList = topRooms;
mBinding.bannerViewPager.create(topRooms); // 刷新数据并启动自动播放
}
@@ -390,7 +383,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
public Fragment createFragment(int position) {
RoomTypeModel roomTypeModel = list.get(position);
String categoryId = roomTypeModel.getId();
return HotListFragment.newInstance(VoiceCategoryFragment.this,categoryId, TYPE_INDEX);
return HotListFragment.newInstance(VoiceCategoryFragment.this, categoryId, TYPE_INDEX);
}
@Override

View File

@@ -35,12 +35,6 @@ public class RoomPresenter extends BasePresenter<RoomContacts.View> implements R
@Override
public void getRoomIn(String roomId, String password) {
// Type listType = new TypeToken<RoomInfoResp>() {}.getType();
// RoomInfoResp restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtil.getRoomInfoResp(), listType);
// if (restoredRoomModels!= null ) {
// MvpRef.get().roomInfo(restoredRoomModels);
// }
api.roomGetIn(roomId, password, new BaseObserver<RoomInfoResp>() {
@Override
public void onSubscribe(Disposable d) {
@@ -70,15 +64,6 @@ public class RoomPresenter extends BasePresenter<RoomContacts.View> implements R
AgoraManager.getInstance(mContext.getApplicationContext())
.joinRoom(token, roomId, uid, enableMic,enableJs);
}
// 初始化 Agora 并加入房间
// RtcCore rtcCore = RtcCore.getInstance(getView().getSelfActivity());
// rtcCore.initAgora(appId);
// 2. 加入房间
// rtcCore.joinRoom(token, roomId, uid, enableMic);
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}

View File

@@ -1,7 +1,9 @@
package com.xscm.modulemain.activity.user.activity;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.view.View;
@@ -9,7 +11,11 @@ import androidx.appcompat.app.AlertDialog;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.FileUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.blankj.utilcode.util.ZipUtils;
import com.tencent.qcloud.tuikit.timcommon.util.FileProvider;
import com.xscm.modulemain.Application;
import com.xscm.modulemain.R;
import com.xscm.modulemain.databinding.ActivitySettingBinding;
import com.xscm.modulemain.activity.user.conacts.SettingConacts;
@@ -24,6 +30,17 @@ import com.xscm.moduleutil.utils.config.ConfigManager;
import com.xscm.moduleutil.utils.config.EnvironmentEnum;
import com.xscm.moduleutil.utils.config.EnvironmentPrefs;
import com.xscm.moduleutil.widget.CommonAppConfig;
import java.io.File;
import java.util.Objects;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/**
*@author qx
*@data 2025/8/14
@@ -67,8 +84,10 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
mBinding.llZhxiao.setOnClickListener(this::onClick);
mBinding.llGywm.setOnClickListener(this::onClick);
mBinding.llBbh.setOnClickListener(this::onClick);
mBinding.tvShare.setOnClickListener(this::onClick);
}
@SuppressLint("CheckResult")
private void onClick(View view) {
if (view.getId() == R.id.ll_youth) {
// startActivity(new Intent(this, UnderageActivity.class));
@@ -184,6 +203,47 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
handler.postDelayed(resetRunnable, RESET_DELAY);
}
}
} else if (view.getId() == R.id.tv_share) {
Observable.create(new ObservableOnSubscribe<Boolean>() {
@SuppressLint("CheckResult")
@Override
public void subscribe(ObservableEmitter<Boolean> emitter) throws Exception {
try {
File file = new File(Application.Companion.getInstance().getAppContent());
if (FileUtils.isFileExists(file.getParent() +"/DataInfo.zip")){
FileUtils.delete(file.getParent() +"/DataInfo.zip");
}
boolean isZip = ZipUtils.zipFile(Application.Companion.getInstance().getAppContent(),
file.getParent() +"/DataInfo.zip");
emitter.onNext(isZip);
}catch (Exception e){
LogUtils.e("压缩失败",e.toString());
emitter.onNext(false);
}
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Boolean>() {
@SuppressLint("CheckResult")
@Override
public void accept(Boolean aBoolean) {
if (aBoolean){
File file = new File(Application.Companion.getInstance().getAppContent()+"/DataInfo.zip");
Uri uri = FileProvider.getUriForFile(SettingActivity.this, getPackageName()+".fileprovider", file);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(intent,"分享到"));
}else {
LogUtils.e("压缩失败");
}
}
});
}
}
private void showYouthModelDialog() {

View File

@@ -128,7 +128,8 @@ public class UnderageActivity extends BaseMvpActivity<UnderagePresenter, Activit
// ToastUtils.showShort("密码验证成功");
ARouter.getInstance().build(ARouteConstants.ME).navigation();
ActivityUtils.finishAllActivities();
ActivityUtils.finishActivity(WebViewActivity.class);
finish();
} else {
// 密码错误,提示并清空输入框
ToastUtils.showShort("密码错误,请重新输入");
@@ -191,10 +192,6 @@ public class UnderageActivity extends BaseMvpActivity<UnderagePresenter, Activit
* 跳转到下一个页面
*/
private void navigateToNextPage() {
// ToastUtils.showShort("密码设置成功");
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken())
// .withString("type", "1").navigation();
Intent intent = new Intent(UnderageActivity.this, WebViewActivity.class);
intent.putExtra("type", "1");
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken());
@@ -203,8 +200,6 @@ public class UnderageActivity extends BaseMvpActivity<UnderagePresenter, Activit
mBinding.verificationcodeview.setText("");
finish();
// 这里可以添加页面跳转逻辑
ActivityUtils.finishAllActivities();
}
@Override

View File

@@ -383,5 +383,14 @@
</LinearLayout>
</ScrollView>
<TextView
android:id="@+id/tv_share"
android:layout_gravity="start"
android:padding="@dimen/dp_40"
android:layout_marginTop="-50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</layout>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<!-- Environment.getExternalStorageDirectory()-->
<external-path
name="external-path"
path="."/>
<!-- Context.getExternalCacheDir() -->
<external-cache-path
name="external-cache-path"
path="."/>
<!-- Context.getExternalFilesDir(null) -->
<external-files-path
name="external-files-path"
path="."/>
<!-- Context.getFilesDir() -->
<files-path
name="files_path"
path="."/>
<root-path
name="name"
path="."/>
</paths>

View File

@@ -201,6 +201,17 @@
android:name=".PasswordLoginActivity"
android:exported="true"
/>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
<!-- <queries>-->
<!-- &lt;!&ndash; 支付宝 scheme &ndash;&gt;-->

View File

@@ -0,0 +1,3 @@
package com.qxcm.qxlive;
public class FileProvider extends androidx.core.content.FileProvider {}

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<!-- Environment.getExternalStorageDirectory()-->
<external-path
name="external-path"
path="."/>
<!-- Context.getExternalCacheDir() -->
<external-cache-path
name="external-cache-path"
path="."/>
<!-- Context.getExternalFilesDir(null) -->
<external-files-path
name="external-files-path"
path="."/>
<!-- Context.getFilesDir() -->
<files-path
name="files_path"
path="."/>
<!-- Context.getCacheDir() -->
<cache-path
name="cache-path"
path="."/>
<root-path
name="name"
path="."/>
</paths>