diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/MyConverterFactory.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/MyConverterFactory.java index a6c8ee5e..a56c6298 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/MyConverterFactory.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/MyConverterFactory.java @@ -51,7 +51,6 @@ public class MyConverterFactory extends Converter.Factory { public Converter 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)); } } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index bcd20777..ace8ddcf 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -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 observer) { sApiServer.appUpdate().compose(new DefaultTransformer<>()).subscribe(observer); } @@ -2808,7 +2786,6 @@ public class RetrofitClient { } public void firstChargeGift(BaseObserver observer) { -// sApiServer.firstChargeGift().compose(new DefaultTransformer<>()).subscribe(observer); sApiServer.firstChargeGift().enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java index eadfe932..8f9951a3 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java @@ -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;//服务器地址 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java index 6ee06f9c..844c2f9d 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/logger/DataLogger.java @@ -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; } diff --git a/MainModule/src/main/AndroidManifest.xml b/MainModule/src/main/AndroidManifest.xml index b7a5e22c..52660643 100644 --- a/MainModule/src/main/AndroidManifest.xml +++ b/MainModule/src/main/AndroidManifest.xml @@ -195,6 +195,16 @@ android:exported="true" /> + + + + \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/Application.kt b/MainModule/src/main/java/com/xscm/modulemain/Application.kt index ae85eb4a..a87cccac 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/Application.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/Application.kt @@ -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 + } + + } \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt index 22ba8d79..d111396b 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt @@ -1366,7 +1366,7 @@ class RoomActivity : BaseMvpActivity(), } 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(), 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) - } + roomFragment!!.handleRoomMessage(messageEvent) } } else if (msgType == EMMessageInfo.QXRoomMessageTypeMangH) { // 1056 抽奖结果 val dialog = supportFragmentManager diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java index f483c28b..f86a6b20 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java @@ -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 0) { if (mBinding.wheatView3.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) { mBinding.wheatView3.setLockZl(false); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java index a44cd331..418823cb 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomKtvFragment.java @@ -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 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 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() + "")) { diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomNoticeDialogFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomNoticeDialogFragment.java index fc215d87..236555a0 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomNoticeDialogFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomNoticeDialogFragment.java @@ -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 diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java index ceeede89..e07ad407 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/SingSongFragment.java @@ -170,11 +170,7 @@ public class SingSongFragment extends BaseRoomFragment { - 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 { @@ -284,11 +285,9 @@ public class VoiceCategoryFragment extends BaseMvpFragment 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 implements R @Override public void getRoomIn(String roomId, String password) { -// Type listType = new TypeToken() {}.getType(); -// RoomInfoResp restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtil.getRoomInfoResp(), listType); -// if (restoredRoomModels!= null ) { -// MvpRef.get().roomInfo(restoredRoomModels); -// } - api.roomGetIn(roomId, password, new BaseObserver() { @Override public void onSubscribe(Disposable d) { @@ -70,15 +64,6 @@ public class RoomPresenter extends BasePresenter 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); } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java index b6d4f9a4..82322d7d 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java @@ -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() { + @SuppressLint("CheckResult") + @Override + public void subscribe(ObservableEmitter 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() { + @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() { diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UnderageActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UnderageActivity.java index 4f964305..1d904677 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UnderageActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UnderageActivity.java @@ -128,7 +128,8 @@ public class UnderageActivity extends BaseMvpActivity + + + \ No newline at end of file diff --git a/MainModule/src/main/res/xml/file_paths.xml b/MainModule/src/main/res/xml/file_paths.xml new file mode 100644 index 00000000..62e2dca1 --- /dev/null +++ b/MainModule/src/main/res/xml/file_paths.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f8e8a865..a3ae9994 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -201,6 +201,17 @@ android:name=".PasswordLoginActivity" android:exported="true" /> + + + + + diff --git a/app/src/main/java/com/qxcm/qxlive/FileProvider.java b/app/src/main/java/com/qxcm/qxlive/FileProvider.java new file mode 100644 index 00000000..1b378129 --- /dev/null +++ b/app/src/main/java/com/qxcm/qxlive/FileProvider.java @@ -0,0 +1,3 @@ +package com.qxcm.qxlive; + +public class FileProvider extends androidx.core.content.FileProvider {} diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 00000000..91a79ed3 --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + \ No newline at end of file