Compare commits
28 Commits
habu_relea
...
habu
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7291b61e44 | ||
![]() |
034185d13b | ||
![]() |
39a9e277bd | ||
![]() |
b11b6928c5 | ||
![]() |
41c00cadcd | ||
![]() |
4cbc12487b | ||
![]() |
345cf1a112 | ||
![]() |
7cb27f61b1 | ||
![]() |
865dbb09b6 | ||
![]() |
a38190e2f9 | ||
![]() |
ef5e0a8f59 | ||
![]() |
774965a2ec | ||
![]() |
0d488877c8 | ||
![]() |
b647785244 | ||
![]() |
9063aee884 | ||
![]() |
a3f2f1324c | ||
![]() |
fe3347fd00 | ||
![]() |
e97f5b3953 | ||
![]() |
72f12588c0 | ||
![]() |
995278f44f | ||
![]() |
382eeb3a89 | ||
![]() |
9462b4a1be | ||
![]() |
cfdb30b1d5 | ||
![]() |
b598d6d3a6 | ||
![]() |
ab08a85a2a | ||
![]() |
2b79b7ae6a | ||
![]() |
7e05a6514f | ||
![]() |
ee28779a01 |
@@ -147,7 +147,7 @@ android {
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
def server_url_debug = '"http://beta.api.anan.chat/"'
|
||||
def server_url_debug = '"http://beta.api.pekolive.com/"'
|
||||
def server_url_release = '"https://api.anan.chat/"'
|
||||
|
||||
debug {
|
||||
|
@@ -830,6 +830,10 @@
|
||||
<activity
|
||||
android:name=".ui.webview.DatingRuleWebViewActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
<activity
|
||||
android:name=".ui.webview.room_banner.RoomBannerWebDialogActivity"
|
||||
android:theme="@style/dialog_web_view_activity"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".ui.webview.TarotPayWebViewActivity"
|
||||
android:theme="@style/dialog_web_view_activity" />
|
||||
@@ -958,11 +962,6 @@
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.login.LoginBoundAuthCodeActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.setting.ShieldManageActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
|
||||
|
@@ -68,7 +68,6 @@ import com.yizhuan.habu.ui.im.ImInitHelper;
|
||||
import com.yizhuan.habu.ui.im.avtivity.NimP2PMessageActivity;
|
||||
import com.yizhuan.habu.ui.login.BindPhoneActivity;
|
||||
import com.yizhuan.habu.ui.login.LoginActivity;
|
||||
import com.yizhuan.habu.ui.login.LoginBoundAuthCodeActivity;
|
||||
import com.yizhuan.habu.ui.login.fragment.AddUserInfoFragment;
|
||||
import com.yizhuan.habu.ui.patriarch.help.LimitEnterRoomHelper;
|
||||
import com.yizhuan.habu.ui.patriarch.help.PmDialogShowMrg;
|
||||
@@ -111,11 +110,9 @@ import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedBindPhoneEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedVerifyBoundAuthCodeEvent;
|
||||
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.StringUtils;
|
||||
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
|
||||
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
|
||||
import com.yizhuan.xchat_android_library.threadmgr.ThreadPoolManager;
|
||||
import com.yizhuan.xchat_android_library.utils.JavaUtil;
|
||||
@@ -254,6 +251,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
mMainTabLayout.setMainTabInfoList(mainTabInfo);
|
||||
}
|
||||
});
|
||||
InitialModel.get().regionCheck();
|
||||
//检测更新
|
||||
AppUpgradeHelper.checkAppUpgrade(this);
|
||||
initMaterialView();
|
||||
@@ -410,6 +408,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
}
|
||||
onParseIntent();
|
||||
handleNimIntent();
|
||||
InitialModel.get().regionCheck();
|
||||
}
|
||||
|
||||
private void onParseIntent() {
|
||||
@@ -558,29 +557,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
mMainTabLayout.setMsgNum(unreadCount);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void NeedVerifyBoundAuthCode(NeedVerifyBoundAuthCodeEvent event) {
|
||||
AuthModel.get()
|
||||
.isBoundPhoneAuthCode()
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(new BeanObserver<Boolean>() {
|
||||
@Override
|
||||
public void onErrorMsg(String error) {
|
||||
com.yizhuan.xchat_android_core.utils.Logger.info("isBoundAuthCode", error);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Boolean flag) {
|
||||
if (!flag) {
|
||||
LoginBoundAuthCodeActivity.start(MainActivity.this);
|
||||
} else {
|
||||
//首次注册需要完善昵称和头像
|
||||
UIHelper.showAddInfoAct(MainActivity.this);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onNeedCompleteInfo(NeedCompleteInfoEvent event) {
|
||||
getDialogManager().dismissDialog();
|
||||
|
@@ -3,7 +3,6 @@ package com.yizhuan.habu.application;
|
||||
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
@@ -16,6 +15,7 @@ import android.util.Log;
|
||||
import androidx.multidex.MultiDex;
|
||||
|
||||
import com.bumptech.glide.request.target.ViewTarget;
|
||||
import com.chuhai.utils.LanguageUtils;
|
||||
import com.coorchice.library.utils.LogUtils;
|
||||
import com.facebook.stetho.Stetho;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
@@ -39,7 +39,6 @@ import com.scwang.smartrefresh.header.MaterialHeader;
|
||||
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
|
||||
import com.tencent.vasdolly.helper.ChannelReaderUtil;
|
||||
import com.yizhuan.habu.AgentActivity;
|
||||
import com.yizhuan.habu.BuildConfig;
|
||||
import com.yizhuan.habu.NimMiddleActivity;
|
||||
import com.yizhuan.habu.R;
|
||||
@@ -241,6 +240,10 @@ public class XChatApplication extends BaseApp {
|
||||
SingleToastUtil.showToast(serviceResult.getMessage());
|
||||
EventBus.getDefault().post(new NeedCompleteInfoEvent());
|
||||
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
|
||||
} else if (serviceResult.getCode() == 401) {
|
||||
SingleToastUtil.showToast(serviceResult.getMessage());
|
||||
AuthModel.get().cleanLogInfo();
|
||||
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -400,6 +403,7 @@ public class XChatApplication extends BaseApp {
|
||||
httpParams.put("deviceId", DeviceUuidFactory.getDeviceId(context));
|
||||
httpParams.put("androidId", MD5Utils.getMD5String(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)));
|
||||
httpParams.put("channel", AppMetaDataUtil.getChannelID());
|
||||
httpParams.put("lang", LanguageUtils.INSTANCE.getSystemLanguage().toLanguageTag());
|
||||
RxNet.init(context)
|
||||
.debug(BuildConfig.DEBUG)
|
||||
.setBaseUrl(url)
|
||||
|
@@ -513,9 +513,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
|
||||
//設置透明度
|
||||
rollPagerView.setAnimationDurtion(500)
|
||||
bannerAdapter.notifyDataSetChanged()
|
||||
bannerAdapter.setRoomActClickListener { url ->
|
||||
DialogWebViewActivity.start(mContext, url)
|
||||
}
|
||||
|
||||
// 模擬指示器在viewpager底部效果
|
||||
val viewPager = rollPagerView.viewPager
|
||||
|
@@ -1,95 +0,0 @@
|
||||
package com.yizhuan.habu.home.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.yizhuan.habu.R;
|
||||
import com.yizhuan.habu.avroom.firstcharge.FirstChargeDialog;
|
||||
import com.yizhuan.habu.shipantics.PullRadishActivity;
|
||||
import com.yizhuan.habu.treasure_box.widget.GoldBoxHelper;
|
||||
import com.yizhuan.habu.treasurefairy.HomeFairyActivity;
|
||||
import com.yizhuan.habu.ui.utils.ImageLoadUtils;
|
||||
import com.yizhuan.habu.ui.widget.rollviewpager.adapter.StaticPagerAdapter;
|
||||
import com.yizhuan.habu.utils.CommonJumpHelper;
|
||||
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
|
||||
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
|
||||
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RoomActAdapter extends StaticPagerAdapter {
|
||||
|
||||
private Context mContext;
|
||||
private List<BannerInfo> data;
|
||||
private RoomActClickListener listener;
|
||||
|
||||
public RoomActAdapter(Context context, List<BannerInfo> data) {
|
||||
this.data = data;
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(ViewGroup container, int position) {
|
||||
View view = LayoutInflater.from(mContext).inflate(R.layout.item_room_act, container, false);
|
||||
ImageView ivCover = view.findViewById(R.id.iv_cover);
|
||||
BannerInfo bannerInfo = data.get(position);
|
||||
String actId = String.valueOf(bannerInfo.getBannerId());
|
||||
ivCover.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
if (bannerInfo.isFairy()) {
|
||||
ivCover.setImageResource(R.drawable.ic_fairy_entrance);
|
||||
} else if (bannerInfo.isFirstCharge()) {
|
||||
ivCover.setImageResource(R.drawable.ic_first_charge_enter);
|
||||
} else if (bannerInfo.isBox()) {
|
||||
GlideApp.with(BasicConfig.INSTANCE.getAppContext())
|
||||
.load(GoldBoxHelper.getBoxIcon())
|
||||
.error(R.drawable.icon_room_treasure_box)
|
||||
.into(ivCover);
|
||||
} else if (bannerInfo.isRadish()) {
|
||||
ivCover.setImageResource(R.drawable.ic_radish_entrance);
|
||||
} else {
|
||||
ImageLoadUtils.loadImage(mContext, bannerInfo.getBannerPic(), ivCover, R.drawable.default_cover);
|
||||
}
|
||||
ivCover.setOnClickListener(v -> {
|
||||
if (bannerInfo.isFairy()) {
|
||||
HomeFairyActivity.start(mContext);
|
||||
} else if (bannerInfo.isFirstCharge()) {
|
||||
FirstChargeDialog.start(mContext);
|
||||
} else if (bannerInfo.isBox()) {
|
||||
GoldBoxHelper.handleBoxClick(mContext);
|
||||
} else if (bannerInfo.isRadish()) {
|
||||
PullRadishActivity.start(mContext);
|
||||
} else {
|
||||
AvRoomModel.get().activityClickLog("2", actId).subscribe();
|
||||
if (bannerInfo.getSkipType() == 3 && bannerInfo.getShowType() != 1) {
|
||||
if (listener != null) {
|
||||
listener.onWebClick(bannerInfo.getSkipUri());
|
||||
}
|
||||
} else {
|
||||
CommonJumpHelper.bannerJump(mContext, bannerInfo);
|
||||
}
|
||||
}
|
||||
});
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
if (data != null) {
|
||||
return data.size();
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void setRoomActClickListener(RoomActClickListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public interface RoomActClickListener {
|
||||
void onWebClick(String url);
|
||||
}
|
||||
}
|
@@ -0,0 +1,80 @@
|
||||
package com.yizhuan.habu.home.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import com.netease.nim.uikit.support.glide.GlideApp
|
||||
import com.yizhuan.habu.R
|
||||
import com.yizhuan.habu.avroom.firstcharge.FirstChargeDialog
|
||||
import com.yizhuan.habu.shipantics.PullRadishActivity
|
||||
import com.yizhuan.habu.treasure_box.widget.GoldBoxHelper
|
||||
import com.yizhuan.habu.treasurefairy.HomeFairyActivity
|
||||
import com.yizhuan.habu.ui.utils.ImageLoadUtils
|
||||
import com.yizhuan.habu.ui.webview.room_banner.RoomBannerWebDialogActivity
|
||||
import com.yizhuan.habu.ui.widget.rollviewpager.adapter.StaticPagerAdapter
|
||||
import com.yizhuan.habu.utils.CommonJumpHelper
|
||||
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
|
||||
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
|
||||
import com.yizhuan.xchat_android_library.utils.config.BasicConfig
|
||||
import okhttp3.internal.filterList
|
||||
|
||||
class RoomActAdapter(private val mContext: Context, private val data: List<BannerInfo>) :
|
||||
StaticPagerAdapter() {
|
||||
override fun getView(container: ViewGroup, position: Int): View {
|
||||
val view = LayoutInflater.from(mContext).inflate(R.layout.item_room_act, container, false)
|
||||
val ivCover = view.findViewById<ImageView>(R.id.iv_cover)
|
||||
val bannerInfo = data[position]
|
||||
val actId = bannerInfo.bannerId.toString()
|
||||
ivCover.scaleType = ImageView.ScaleType.CENTER_CROP
|
||||
if (bannerInfo.isFairy) {
|
||||
ivCover.setImageResource(R.drawable.ic_fairy_entrance)
|
||||
} else if (bannerInfo.isFirstCharge) {
|
||||
ivCover.setImageResource(R.drawable.ic_first_charge_enter)
|
||||
} else if (bannerInfo.isBox) {
|
||||
GlideApp.with(BasicConfig.INSTANCE.appContext)
|
||||
.load(GoldBoxHelper.getBoxIcon())
|
||||
.error(R.drawable.icon_room_treasure_box)
|
||||
.into(ivCover)
|
||||
} else if (bannerInfo.isRadish) {
|
||||
ivCover.setImageResource(R.drawable.ic_radish_entrance)
|
||||
} else {
|
||||
ImageLoadUtils.loadImage(
|
||||
mContext,
|
||||
bannerInfo.bannerPic,
|
||||
ivCover,
|
||||
R.drawable.default_cover
|
||||
)
|
||||
}
|
||||
ivCover.setOnClickListener { v: View? ->
|
||||
if (bannerInfo.isFairy) {
|
||||
HomeFairyActivity.start(mContext)
|
||||
} else if (bannerInfo.isFirstCharge) {
|
||||
FirstChargeDialog.start(mContext)
|
||||
} else if (bannerInfo.isBox) {
|
||||
GoldBoxHelper.handleBoxClick(mContext)
|
||||
} else if (bannerInfo.isRadish) {
|
||||
PullRadishActivity.start(mContext)
|
||||
} else {
|
||||
AvRoomModel.get().activityClickLog("2", actId).subscribe()
|
||||
if (bannerInfo.skipType == 3) {
|
||||
val list = data.filterList {
|
||||
skipType == 3
|
||||
}
|
||||
val newPosition = list.indexOfFirst {
|
||||
it == bannerInfo
|
||||
}
|
||||
RoomBannerWebDialogActivity.start(mContext, newPosition, list)
|
||||
} else {
|
||||
CommonJumpHelper.bannerJump(mContext, bannerInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
return view
|
||||
}
|
||||
|
||||
override fun getCount(): Int {
|
||||
return data.size
|
||||
}
|
||||
}
|
@@ -1,111 +0,0 @@
|
||||
package com.yizhuan.habu.ui.login
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.KeyEvent
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import com.netease.nim.uikit.StatusBarUtil
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent
|
||||
import com.yizhuan.habu.R
|
||||
import com.yizhuan.habu.base.BaseViewBindingActivity
|
||||
import com.yizhuan.habu.databinding.ActivityLoginBoundAuthCodeBinding
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent
|
||||
import com.yizhuan.xchat_android_core.utils.TextUtils
|
||||
import com.yizhuan.xchat_android_core.utils.net.BeanObserver
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
/**
|
||||
* 绑定授权码
|
||||
*/
|
||||
class LoginBoundAuthCodeActivity : BaseViewBindingActivity<ActivityLoginBoundAuthCodeBinding>(),
|
||||
View.OnClickListener {
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmStatic
|
||||
fun start(context: Context) {
|
||||
val starter = Intent(context, LoginBoundAuthCodeActivity::class.java)
|
||||
context.startActivity(starter)
|
||||
}
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
binding.btnNext.setOnClickListener(this)
|
||||
binding.etAccount.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
|
||||
|
||||
}
|
||||
|
||||
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
||||
|
||||
}
|
||||
|
||||
override fun afterTextChanged(s: Editable?) {
|
||||
val enabled = binding.etAccount.text.toString().trim { it <= ' ' }.isNotEmpty()
|
||||
binding.btnNext.isEnabled = enabled
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
override fun onClick(view: View?) {
|
||||
when (view?.id) {
|
||||
R.id.btnNext -> {
|
||||
if (TextUtils.isEmptyText(binding.etAccount.text.toString())) {
|
||||
toast(getString(R.string.bound_auth_code_is_empty))
|
||||
return
|
||||
}
|
||||
AuthModel.get()
|
||||
.boundAuthCode(binding.etAccount.text.toString())
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(object : BeanObserver<String?>() {
|
||||
override fun onErrorMsg(error: String) {
|
||||
toast(error)
|
||||
}
|
||||
|
||||
override fun onSuccess(s: String) {
|
||||
//首次注册需要完善昵称和头像
|
||||
EventBus.getDefault().post(NeedCompleteInfoEvent())
|
||||
finish()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onTouchEvent(event: MotionEvent): Boolean {
|
||||
val view = currentFocus
|
||||
var isPressEdit = false
|
||||
if (view is EditText) {
|
||||
if (event.rawX >= view.getX() && event.rawX <= view.getX() + view.getWidth() && event.rawY >= view.getY() && event.rawY <= view.getY() + view.getHeight()) {
|
||||
isPressEdit = true
|
||||
}
|
||||
}
|
||||
if (!isPressEdit) {
|
||||
hideIME()
|
||||
}
|
||||
return super.onTouchEvent(event)
|
||||
}
|
||||
|
||||
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
||||
moveTaskToBack(true)
|
||||
return true
|
||||
}
|
||||
return super.onKeyDown(keyCode, event)
|
||||
}
|
||||
|
||||
override fun needSteepStateBar() = true
|
||||
|
||||
override fun setStatusBar() {
|
||||
super.setStatusBar()
|
||||
StatusBarUtil.transparencyBar(this)
|
||||
StatusBarUtil.StatusBarLightMode(this)
|
||||
}
|
||||
|
||||
}
|
@@ -37,13 +37,13 @@ import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import java.io.File
|
||||
import kotlin.random.Random
|
||||
|
||||
/**
|
||||
* 设置页
|
||||
* Created by wushaocheng on 2023/2/1.
|
||||
*/
|
||||
class SettingActivity : BaseViewBindingActivity<ActivitySettingBinding>(), View.OnClickListener,ILog {
|
||||
class SettingActivity : BaseViewBindingActivity<ActivitySettingBinding>(), View.OnClickListener,
|
||||
ILog {
|
||||
override fun init() {
|
||||
EventBus.getDefault().register(this)
|
||||
initWhiteTitleBar(ResUtil.getString(R.string.ui_setting_settingactivity_01))
|
||||
@@ -219,6 +219,10 @@ class SettingActivity : BaseViewBindingActivity<ActivitySettingBinding>(), View.
|
||||
private fun debug() {
|
||||
// RedPackageOpenDialog2().show(this)
|
||||
// val json = "{\"first\":3,\"second\":32,\"data\":{\"recvUserUid\":2735,\"recvUserAvatar\":\"https://img.pekolive.com/default_avatar.png\",\"recvUserNick\":\"66丢丢丢丢丢多多多的hhhh\",\"sendUserNick\":\"11的ass\",\"sendUserAvatar\":\"http://beta.img.pekolive.com/Fk7aur-1RBqKXC-qqBwMTjivZ3lV?imageslim\",\"sendUserUid\":2737,\"giftUrl\":\"http://beta.img.pekolive.com/Fn6h_gPFD5MwA-Ql_kcWqNpKp0JM?imageslim\",\"giftName\":\"幽靈糖果\",\"giftId\":2075,\"giftNum\":${Random.nextInt(1,1000)},\"giftGolds\":33440,\"notifyStaySecond\":5,\"isHomeShow\":true,\"isSkipRoom\":true,\"isFullScreen\":false,\"isSendMsg\":false,\"roomUid\":2737,\"roomErbanNo\":11,\"roomTitle\":\"11的工会\",\"levelNum\":${Random.nextInt(1,4)}}}"
|
||||
// onReceivedNimBroadcastMessage(json)
|
||||
// CommonWebViewActivity.start(this,"http://192.168.0.19:5500/#/Rank")
|
||||
// val json =
|
||||
// "{\"first\":85,\"second\":855,\"data\":{\"nick\":\"66丢丢丢丢丢多多多的hhhh\",\"preVipName\":\"子爵\",\"floatPic\":\"https://image.hfighting.com/Fq3JtbK2acO3FN-3vWZo8ldtHfse\",\"uid\":2735,\"currVipName\":\"侯爵\",\"erbanNo\":66,\"roomUid\":2734,\"avatar\":\"https://img.pekolive.com/default_avatar.png\",\"currVipLevel\":5}}"
|
||||
// onReceivedNimBroadcastMessage(json)
|
||||
}
|
||||
}
|
@@ -9,11 +9,11 @@ import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
import android.net.http.SslError;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.webkit.SslErrorHandler;
|
||||
@@ -59,7 +59,6 @@ import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -99,32 +98,6 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O
|
||||
private static final String POSITION = "position";
|
||||
private int mPosition;
|
||||
|
||||
private int mProgress;
|
||||
|
||||
private Handler mHandler = new Handler();
|
||||
|
||||
private ProgressRunnable mProgressRunnable = new ProgressRunnable(this);
|
||||
|
||||
private static class ProgressRunnable implements Runnable {
|
||||
private WeakReference<CommonWebViewActivity> mWeakReference;
|
||||
|
||||
ProgressRunnable(CommonWebViewActivity activity) {
|
||||
mWeakReference = new WeakReference<>(activity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
CommonWebViewActivity activity = mWeakReference.get();
|
||||
if (activity == null) return;
|
||||
if (activity.mProgress < 96) {
|
||||
activity.mProgress += 3;
|
||||
activity.mProgressBar.setProgress(activity.mProgress);
|
||||
activity.mHandler.postDelayed(activity.mProgressRunnable, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void start(Context context, String url) {
|
||||
Intent intent = new Intent(context, CommonWebViewActivity.class);
|
||||
intent.putExtra("url", url);
|
||||
@@ -222,7 +195,6 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
private void initData() {
|
||||
mHandler.post(mProgressRunnable);
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
webView.getSettings().setUseWideViewPort(true);
|
||||
webView.getSettings().setLoadWithOverviewMode(true);
|
||||
@@ -290,9 +262,20 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
super.onPageFinished(view, url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
||||
super.onPageStarted(view, url, favicon);
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
//获取webviewtitle作为titlebar的title
|
||||
wvcc = new WebChromeClient() {
|
||||
@Override
|
||||
public void onProgressChanged(WebView view, int newProgress) {
|
||||
super.onProgressChanged(view, newProgress);
|
||||
mProgressBar.setProgress(newProgress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceivedTitle(WebView view, String title) {
|
||||
@@ -520,11 +503,6 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (mHandler != null) {
|
||||
mHandler.removeCallbacks(mProgressRunnable);
|
||||
mProgressRunnable = null;
|
||||
mHandler = null;
|
||||
}
|
||||
EventBus.getDefault().unregister(this);
|
||||
|
||||
if (webViewCallBack != null) {
|
||||
|
@@ -3,8 +3,8 @@ package com.yizhuan.habu.ui.webview;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
|
||||
@@ -28,8 +28,18 @@ public class DialogWebViewActivity extends CommonWebViewActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, ScreenUtil.screenHeight / 3 * 2);
|
||||
getWindow().setGravity(Gravity.BOTTOM);
|
||||
getWindow().getDecorView().setSystemUiVisibility(
|
||||
View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||
);
|
||||
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
|
||||
View topView = findViewById(R.id.v_top);
|
||||
topView.setOnClickListener(v -> finish());
|
||||
ViewGroup.LayoutParams params = topView.getLayoutParams();
|
||||
params.height = ScreenUtil.screenHeight / 3;
|
||||
topView.setLayoutParams(params);
|
||||
showTitleBar = getIntent().getBooleanExtra("showTitleBar", true);
|
||||
if (!showTitleBar) {
|
||||
layoutTitleBar.setVisibility(View.GONE);
|
||||
|
@@ -0,0 +1,47 @@
|
||||
package com.yizhuan.habu.ui.webview.room_banner
|
||||
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isInvisible
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.yizhuan.habu.R
|
||||
import com.yizhuan.habu.ui.utils.load
|
||||
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
|
||||
|
||||
/**
|
||||
* Created by Max on 2023/11/17 12:30
|
||||
* Desc:
|
||||
**/
|
||||
class RoomBannerTabAdapter :
|
||||
BaseQuickAdapter<BannerInfo, BaseViewHolder>(R.layout.room_banner_item_tab) {
|
||||
|
||||
private var selectedPosition = -1
|
||||
override fun convert(helper: BaseViewHolder, item: BannerInfo?) {
|
||||
helper.getView<ImageView>(R.id.iv_content).load(item?.bannerUrl)
|
||||
convertState(helper, item)
|
||||
}
|
||||
|
||||
override fun convertPayloads(
|
||||
helper: BaseViewHolder,
|
||||
item: BannerInfo?,
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
super.convertPayloads(helper, item, payloads)
|
||||
convertState(helper, item)
|
||||
}
|
||||
|
||||
private fun convertState(helper: BaseViewHolder, item: BannerInfo?) {
|
||||
helper.getView<View>(R.id.v_selector).isInvisible =
|
||||
helper.absoluteAdapterPosition != selectedPosition
|
||||
}
|
||||
|
||||
fun getSelectedPosition(): Int {
|
||||
return selectedPosition
|
||||
}
|
||||
|
||||
fun select(position: Int) {
|
||||
this.selectedPosition = position
|
||||
notifyItemRangeChanged(0, itemCount, true)
|
||||
}
|
||||
}
|
@@ -0,0 +1,91 @@
|
||||
package com.yizhuan.habu.ui.webview.room_banner
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.chuhai.utils.UiUtils
|
||||
import com.yizhuan.habu.R
|
||||
import com.yizhuan.habu.ui.webview.CommonWebViewActivity
|
||||
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
|
||||
|
||||
|
||||
/**
|
||||
* Created by Max on 2023/11/17 11:38
|
||||
* Desc:房间内-Banner-WEB展示页面
|
||||
**/
|
||||
class RoomBannerWebDialogActivity : CommonWebViewActivity() {
|
||||
|
||||
private var recyclerView: RecyclerView? = null
|
||||
private var adapter: RoomBannerTabAdapter? = null
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun start(context: Context, position: Int, list: List<BannerInfo>) {
|
||||
val newList = ArrayList<BannerInfo>()
|
||||
newList.addAll(list)
|
||||
val intent = Intent(context, RoomBannerWebDialogActivity::class.java)
|
||||
intent.putExtra("position", position)
|
||||
intent.putExtra("list", newList)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.room_banner_dialog
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
|
||||
window.setLayout(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.MATCH_PARENT
|
||||
)
|
||||
val topView = findViewById<View>(R.id.v_top)
|
||||
topView.setOnClickListener { v: View? -> finish() }
|
||||
val params = topView.layoutParams
|
||||
params.height = UiUtils.dip2px(168f)
|
||||
topView.layoutParams = params
|
||||
webView.setBackgroundColor(Color.parseColor("#C9CBD1"))
|
||||
recyclerView = findViewById(R.id.recyclerView)
|
||||
val position = 0.coerceAtLeast(intent.getIntExtra("position", 0))
|
||||
val list = intent.getSerializableExtra("list") as? ArrayList<BannerInfo>
|
||||
// if ((list?.size ?: 0) <= 1) {
|
||||
// recyclerView?.isVisible = false
|
||||
// }
|
||||
adapter = RoomBannerTabAdapter().apply {
|
||||
setOnItemClickListener { adapter, view, position ->
|
||||
if (this@RoomBannerWebDialogActivity.adapter?.getSelectedPosition() == position) {
|
||||
return@setOnItemClickListener
|
||||
}
|
||||
switchTab(position)
|
||||
}
|
||||
}
|
||||
recyclerView?.adapter = adapter
|
||||
adapter?.setNewData(list)
|
||||
switchTab(position)
|
||||
}
|
||||
|
||||
private fun switchTab(position: Int) {
|
||||
val url = adapter?.getItem(position)?.skipUri
|
||||
showWebView(url)
|
||||
adapter?.select(position)
|
||||
recyclerView?.post {
|
||||
recyclerView?.scrollToPosition(position)
|
||||
}
|
||||
}
|
||||
|
||||
override fun showWebView(url: String?) {
|
||||
if (url.isNullOrEmpty()) {
|
||||
return
|
||||
}
|
||||
super.showWebView(url)
|
||||
}
|
||||
}
|
@@ -16,6 +16,7 @@ import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.chuhai.utils.ServiceTime;
|
||||
import com.opensource.svgaplayer.SVGADrawable;
|
||||
import com.opensource.svgaplayer.SVGADynamicEntity;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
@@ -41,6 +42,8 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
|
||||
|
||||
private final VipMessageInfo vipMessageInfo;
|
||||
private DialogVipAllServiceLevelUpBinding binding;
|
||||
private long startTime = 0;
|
||||
private int frameCount = 0;
|
||||
|
||||
public AllServiceVipLevelUPDialog(Context context, @NonNull VipMessageInfo vipMessageInfo) {
|
||||
super(context, R.style.FullScreenDialog);
|
||||
@@ -77,7 +80,7 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
|
||||
.append(ResUtil.getString(R.string.widget_dialog_allserviceviplevelupdialog_01), new ForegroundColorSpan(Color.WHITE))
|
||||
.append("-", new CircleImageSpan(new ColorDrawable(Color.TRANSPARENT), vipMessageInfo.getAvatar(), 50, 50))
|
||||
.append(" " + StringExtensionKt.sub(vipMessageInfo.getNick(), 6) + " ", new ForegroundColorSpan(getContext().getResources().getColor(R.color.notice_nick)))
|
||||
.append(ResUtil.getString(R.string.widget_dialog_allserviceviplevelupdialog_02) + vipMessageInfo.getCurrVipName(), new ForegroundColorSpan(Color.WHITE)+"!");
|
||||
.append(ResUtil.getString(R.string.widget_dialog_allserviceviplevelupdialog_02) + vipMessageInfo.getCurrVipName(), new ForegroundColorSpan(Color.WHITE) + "!");
|
||||
|
||||
SVGAImageView svgaImageView = new SVGAImageView(getContext());
|
||||
svgaImageView.setLoops(1);
|
||||
@@ -87,7 +90,19 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
|
||||
svgaImageView.setCallback(new SimpleSvgaCallback() {
|
||||
@Override
|
||||
public void onFinished() {
|
||||
closeSelf();
|
||||
long offset = ServiceTime.INSTANCE.getTime() - startTime;
|
||||
if (offset < 6000) {
|
||||
int centerFrame = frameCount / 2;
|
||||
if (centerFrame > 0) {
|
||||
// 目前的SVGA资源最后一帧是半透明的,这里强制跳到中间帧,最大程度避免这种情况
|
||||
svgaImageView.stepToFrame(centerFrame, false);
|
||||
}
|
||||
svgaImageView.postDelayed(() -> {
|
||||
closeSelf();
|
||||
}, 6000 - offset);
|
||||
} else {
|
||||
closeSelf();
|
||||
}
|
||||
}
|
||||
});
|
||||
binding.flSvgaVipNotify.addView(svgaImageView);
|
||||
@@ -95,6 +110,8 @@ public class AllServiceVipLevelUPDialog extends BaseDialog {
|
||||
SVGAParser.Companion.shareParser().decodeFromURL(new URL(vipMessageInfo.getFloatPic()), new SVGAParser.ParseCompletion() {
|
||||
@Override
|
||||
public void onComplete(@NonNull SVGAVideoEntity svgaVideoEntity) {
|
||||
frameCount = svgaVideoEntity.getFrames();
|
||||
startTime = ServiceTime.INSTANCE.getTime();
|
||||
SVGADynamicEntity dynamicEntity = new SVGADynamicEntity();
|
||||
TextPaint textPaint = new TextPaint();
|
||||
textPaint.setColor(Color.WHITE);//字体颜色
|
||||
|
17
app/src/main/res/drawable/progress_drawable_room_banner.xml
Normal file
17
app/src/main/res/drawable/progress_drawable_room_banner.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@android:id/background"
|
||||
android:drawable="@color/transparent" />
|
||||
|
||||
<item android:id="@android:id/progress">
|
||||
<scale android:scaleWidth="100%">
|
||||
<shape>
|
||||
<corners android:radius="2dp" />
|
||||
<solid android:color="@color/white" />
|
||||
</shape>
|
||||
</scale>
|
||||
</item>
|
||||
|
||||
</layer-list>
|
6
app/src/main/res/drawable/shape_9168fa_4.xml
Normal file
6
app/src/main/res/drawable/shape_9168fa_4.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="#9168fa" />
|
||||
<corners android:radius="4dp" />
|
||||
</shape>
|
@@ -1,95 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:cardBackgroundColor="@color/white"
|
||||
app:cardCornerRadius="10dp"
|
||||
app:cardElevation="0dp">
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
<View
|
||||
android:id="@+id/v_top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp" />
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/layout_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
app:cardBackgroundColor="@color/white"
|
||||
app:cardCornerRadius="10dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_title_bar"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp">
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_title_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_back"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/arrow_left" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_close_black" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/text_title_color"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_back"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/arrow_left" />
|
||||
android:id="@+id/img_share"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:src="@drawable/ic_share_white"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_close_black" />
|
||||
<TextView
|
||||
android:id="@+id/tv_title_right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:textColor="@color/text_normal_c6c6e9"
|
||||
android:textSize="14sp"
|
||||
android:visibility="gone"
|
||||
tools:text="@string/layout_activity_dialog_web_view_01" />
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/progress_drawable" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/text_title_color"
|
||||
android:textSize="18sp" />
|
||||
<WebView
|
||||
android:id="@+id/webview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_share"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:src="@drawable/ic_share_white"
|
||||
android:visibility="gone" />
|
||||
</WebView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title_right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:textColor="@color/text_normal_c6c6e9"
|
||||
android:textSize="14sp"
|
||||
android:visibility="gone"
|
||||
tools:text="@string/layout_activity_dialog_web_view_01" />
|
||||
</FrameLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/progress_drawable" />
|
||||
|
||||
<WebView
|
||||
android:id="@+id/webview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
</WebView>
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
</LinearLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
</LinearLayout>
|
@@ -1,90 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:background="@color/color_white"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<View
|
||||
android:id="@+id/view_bg_top"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/bg_login_new"
|
||||
app:layout_constraintDimensionRatio="750:666"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_slogan"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_24"
|
||||
android:layout_marginBottom="@dimen/dp_24"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/text_login_auth_code"
|
||||
android:textColor="@color/text_title_color"
|
||||
android:textSize="28sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/view_bg_bottom"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/view_bg_bottom"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/shape_white_top_25dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="-120dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/view_bg_top"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="68dp"
|
||||
android:layout_marginStart="34dp"
|
||||
android:layout_marginEnd="34dp"
|
||||
android:gravity="center_vertical"
|
||||
android:background="@drawable/shape_login_btn_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etAccount"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@null"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="@dimen/dp_24"
|
||||
android:paddingEnd="@dimen/dp_10"
|
||||
android:inputType="text"
|
||||
android:hint="@string/Please_enter_the_authorization_code"
|
||||
android:textColorHint="@color/color_B3B3C3"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/text_title_color"
|
||||
android:textSize="@dimen/dp_14"
|
||||
tools:ignore="SpUsage" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnNext"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginStart="@dimen/dp_36"
|
||||
android:layout_marginTop="48dp"
|
||||
android:layout_marginEnd="@dimen/dp_36"
|
||||
android:background="@drawable/bg_common_enabled"
|
||||
android:enabled="false"
|
||||
android:gravity="center"
|
||||
android:text="@string/finish"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -7,8 +7,8 @@
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:id="@+id/btn_cancel"
|
||||
android:layout_width="110dp"
|
||||
android:layout_height="@dimen/dp_38"
|
||||
android:layout_width="105dp"
|
||||
android:layout_height="35dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/cancel"
|
||||
android:textColor="@color/color_B3B3C3"
|
||||
|
118
app/src/main/res/layout/room_banner_dialog.xml
Normal file
118
app/src/main/res/layout/room_banner_dialog.xml
Normal file
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:id="@+id/v_top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp" />
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:cardBackgroundColor="@color/color_262629"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_title_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_back"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/arrow_left" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="45dp"
|
||||
android:layout_height="45dp"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_close_black" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/text_title_color"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_share"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:src="@drawable/ic_share_white"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title_right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:textColor="@color/text_normal_c6c6e9"
|
||||
android:textSize="14sp"
|
||||
android:visibility="gone"
|
||||
tools:text="@string/layout_activity_dialog_web_view_01" />
|
||||
</FrameLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_60"
|
||||
android:orientation="horizontal"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:paddingTop="@dimen/dp_2"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
|
||||
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/webview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="4dp"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/progress_drawable_room_banner" />
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
</LinearLayout>
|
25
app/src/main/res/layout/room_banner_item_tab.xml
Normal file
25
app/src/main/res/layout/room_banner_item_tab.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="5dp">
|
||||
|
||||
<View
|
||||
android:id="@+id/v_selector"
|
||||
android:layout_width="@dimen/dp_93"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/shape_9168fa_4" />
|
||||
|
||||
<com.makeramen.roundedimageview.RoundedImageView
|
||||
android:id="@+id/iv_content"
|
||||
android:layout_width="@dimen/dp_90"
|
||||
android:layout_height="@dimen/dp_42"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
app:riv_corner_radius="4dp"
|
||||
tools:src="@drawable/default_cover" />
|
||||
|
||||
</FrameLayout>
|
@@ -711,5 +711,6 @@
|
||||
<color name="color_FFF87A">#FFFFF87A</color>
|
||||
<color name="color_ffffff_30">#4CFFFFFF</color>
|
||||
<color name="color_FFE468">#FFFFE468</color>
|
||||
<color name="color_C9CBD1">#C9CBD1</color>
|
||||
|
||||
</resources>
|
||||
|
@@ -3,6 +3,7 @@ package com.yizhuan.habu.module_hall.hall.fragment
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.SpannableString
|
||||
import android.text.TextUtils
|
||||
import android.text.TextWatcher
|
||||
import android.view.KeyEvent
|
||||
@@ -16,6 +17,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.yizhuan.habu.R
|
||||
import com.yizhuan.habu.base.BaseViewBindingFragment
|
||||
import com.yizhuan.habu.common.EmptyViewHelper
|
||||
import com.yizhuan.habu.common.widget.dialog.DialogManager
|
||||
import com.yizhuan.habu.databinding.FragmentAssociationRoomBinding
|
||||
import com.yizhuan.habu.module_hall.hall.activity.ModuleHallActivity
|
||||
import com.yizhuan.habu.module_hall.hall.adapter.AssociationRoomAdapter
|
||||
@@ -39,8 +41,8 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
|
||||
}
|
||||
}
|
||||
|
||||
private var associationRoomAdapter: AssociationRoomAdapter ?= null
|
||||
private var rvDelegate: RVDelegate<HallListInfo> ?= null
|
||||
private var associationRoomAdapter: AssociationRoomAdapter? = null
|
||||
private var rvDelegate: RVDelegate<HallListInfo>? = null
|
||||
|
||||
private var list: MutableList<HallListInfo> = ArrayList()
|
||||
|
||||
@@ -51,7 +53,7 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
|
||||
if (!TextUtils.isEmpty(binding.etSearch.text.toString())) {
|
||||
val hallList = list
|
||||
val list = hallList.filter {
|
||||
it.hallName.contains(binding.etSearch.text.toString()) || it.hallId.toString()
|
||||
it.hallName.contains(binding.etSearch.text.toString()) || it.ownerErbanNo.toString()
|
||||
.contains(binding.etSearch.text.toString())
|
||||
}
|
||||
if (list.isEmpty()) {
|
||||
@@ -124,25 +126,19 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
|
||||
}
|
||||
if (it.hallBtnStatus == 3) {
|
||||
NimP2PMessageActivity.startRecord(
|
||||
mContext, bean.hallMessageUid.toString(),
|
||||
bean.hallRecordId.toString()
|
||||
mContext, it.hallMessageUid.toString(),
|
||||
it.hallRecordId.toString()
|
||||
)
|
||||
return@let
|
||||
}
|
||||
dialogManager.showProgressDialog(context)
|
||||
HallModel.get().applyJoinHall(it.hallId)
|
||||
.compose(RxHelper.bindFragment(this))
|
||||
.subscribe(object : BeanObserver<String?>() {
|
||||
override fun onErrorMsg(error: String) {
|
||||
dialogManager.dismissDialog()
|
||||
toast(error)
|
||||
}
|
||||
|
||||
override fun onSuccess(s: String) {
|
||||
dialogManager.dismissDialog()
|
||||
it.hallBtnStatus = 2
|
||||
associationRoomAdapter?.notifyItemChanged(position)
|
||||
toast(getString(R.string.apply_success_wait_to_join_room))
|
||||
dialogManager.showOkCancelWithTitleDialog(ResUtil.getString(R.string.join_organization_tips),
|
||||
it.hallName ?: "",
|
||||
ResUtil.getString(R.string.join_organization_ok),
|
||||
ResUtil.getString(R.string.join_organization_no),
|
||||
object : DialogManager.OkCancelDialogListener {
|
||||
override fun onCancel() {}
|
||||
override fun onOk() {
|
||||
applyJoin(it, position)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -167,6 +163,25 @@ class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomB
|
||||
associationViewModel.getHallList()
|
||||
}
|
||||
|
||||
private fun applyJoin(item: HallListInfo, position: Int) {
|
||||
dialogManager.showProgressDialog(context)
|
||||
HallModel.get().applyJoinHall(item.hallId)
|
||||
.compose(RxHelper.bindFragment(this))
|
||||
.subscribe(object : BeanObserver<String?>() {
|
||||
override fun onErrorMsg(error: String) {
|
||||
dialogManager.dismissDialog()
|
||||
toast(error)
|
||||
}
|
||||
|
||||
override fun onSuccess(s: String) {
|
||||
dialogManager.dismissDialog()
|
||||
item.hallBtnStatus = 2
|
||||
associationRoomAdapter?.notifyItemChanged(position)
|
||||
toast(getString(R.string.apply_success_wait_to_join_room))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun hideSoftInput() {
|
||||
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
imm.hideSoftInputFromWindow(
|
||||
|
@@ -27,4 +27,7 @@
|
||||
<string name="lu_hteam_has_mute_num">已禁言人數 : %d人</string>
|
||||
<string name="lu_hteam_manager_num">群管理人數 : %d人</string>
|
||||
|
||||
<string name="join_organization_tips">確認加入公會</string>
|
||||
<string name="join_organization_ok">是</string>
|
||||
<string name="join_organization_no">否</string>
|
||||
</resources>
|
@@ -7,4 +7,5 @@
|
||||
<color name="color_FF9C7E">#FF9C7E</color>
|
||||
<color name="color_FE6974">#FE6974</color>
|
||||
<color name="color_45C21A">#45C21A</color>
|
||||
<color name="color_262629">#262629</color>
|
||||
</resources>
|
@@ -103,12 +103,9 @@ public class GoldBoxHelper {
|
||||
}
|
||||
|
||||
public static boolean isShowFairy() {
|
||||
return false;
|
||||
// UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
|
||||
// FairyOpenInfo fairyOpenInfo = InitialModel.get().getFairyOpenInfo();
|
||||
// if (fairyOpenInfo == null || userInfo == null) return false;
|
||||
//
|
||||
// return fairyOpenInfo.isOpen() && userInfo.getUserLevelVo().getExperLevelSeq() >= fairyOpenInfo.getLevelLimit();
|
||||
FairyOpenInfo fairyOpenInfo = InitialModel.get().getFairyOpenInfo();
|
||||
if (fairyOpenInfo == null) return false;
|
||||
return fairyOpenInfo.isOpen();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -61,6 +61,7 @@ public class BannerInfo implements Parcelable, Serializable {
|
||||
private boolean isRadish;
|
||||
private boolean isFairy;
|
||||
|
||||
private String bannerUrl;
|
||||
public BannerInfo(){
|
||||
|
||||
}
|
||||
@@ -71,6 +72,7 @@ public class BannerInfo implements Parcelable, Serializable {
|
||||
bannerPic = in.readString();
|
||||
skipType = in.readInt();
|
||||
skipUri = in.readString();
|
||||
bannerUrl = in.readString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,6 +82,7 @@ public class BannerInfo implements Parcelable, Serializable {
|
||||
dest.writeString(bannerPic);
|
||||
dest.writeInt(skipType);
|
||||
dest.writeString(skipUri);
|
||||
dest.writeString(bannerUrl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -219,20 +219,9 @@ public class AuthModel extends BaseModel implements IAuthModel {
|
||||
if (currentAccountInfo == null || TextUtils.isEmpty(currentAccountInfo.getAccess_token())) {
|
||||
return Single.error(new Throwable(""));//没有账号信息
|
||||
}
|
||||
return requestTicket().flatMap(ticketResult -> {
|
||||
if (!ticketResult.isSuccess()) {
|
||||
return Single.error(new Throwable(ticketResult.getMessage()));
|
||||
}
|
||||
ticketInfo = ticketResult.getData();
|
||||
DemoCache.saveTicketInfo(ticketInfo);
|
||||
return Single.just(ResUtil.getString(R.string.xchat_android_core_auth_authmodel_01));
|
||||
})
|
||||
return imLogin(currentAccountInfo)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.flatMap((Function<String, SingleSource<String>>) s -> {
|
||||
Log.i("IMLogin", "apply");
|
||||
return imLogin(currentAccountInfo);
|
||||
})
|
||||
.doOnSuccess(s -> {
|
||||
EventBus.getDefault().post(new LoginEvent());
|
||||
});
|
||||
@@ -781,7 +770,7 @@ public class AuthModel extends BaseModel implements IAuthModel {
|
||||
});
|
||||
}
|
||||
|
||||
private void cleanLogInfo() {
|
||||
public void cleanLogInfo() {
|
||||
reset();//这里先重置状态,后调用IM登出,因为这里观察了IM的在线状态
|
||||
NIMClient.getService(AuthService.class).logout();
|
||||
EventBus.getDefault().post(new LogoutEvent());
|
||||
|
@@ -78,4 +78,5 @@ public interface IInitialModel extends IModel {
|
||||
@Nullable
|
||||
FairyOpenInfo getFairyOpenInfo();
|
||||
|
||||
void regionCheck();
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package com.yizhuan.xchat_android_core.initial;
|
||||
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
@@ -14,6 +15,8 @@ import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.bumptech.glide.request.FutureTarget;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
import com.chuhai.utils.LanguageUtils;
|
||||
import com.chuhai.utils.TelephonyUtils;
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.yizhuan.xchat_android_core.R;
|
||||
import com.yizhuan.xchat_android_core.DemoCache;
|
||||
@@ -49,11 +52,14 @@ import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.SingleOnSubscribe;
|
||||
import io.reactivex.SingleSource;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.functions.Action;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.functions.Function;
|
||||
@@ -131,6 +137,8 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
@Nullable
|
||||
private InitInfo cacheInitInfo;
|
||||
|
||||
private Disposable regionCheckTimer;
|
||||
|
||||
private InitialModel() {
|
||||
api = RxNet.create(Api.class);
|
||||
loadMainTabInfoList();
|
||||
@@ -514,6 +522,31 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
/**
|
||||
* 地区检测
|
||||
*/
|
||||
|
||||
@Override
|
||||
public void regionCheck() {
|
||||
String operatorCode;
|
||||
if (TelephonyUtils.INSTANCE.isChinaOperator()) {
|
||||
operatorCode = "460";
|
||||
} else {
|
||||
operatorCode = TelephonyUtils.INSTANCE.getOperatorFirstSim();
|
||||
}
|
||||
api.regionCheck(LanguageUtils.INSTANCE.getSystemLanguage().toLanguageTag(), operatorCode)
|
||||
.compose(RxHelper.handleSchedulers())
|
||||
.doOnSuccess(longServiceResult -> {
|
||||
if (regionCheckTimer != null && !regionCheckTimer.isDisposed()) {
|
||||
regionCheckTimer.dispose();
|
||||
}
|
||||
if (longServiceResult.isSuccess() && longServiceResult.getData() != null && longServiceResult.getData() > 0) {
|
||||
regionCheckTimer = Observable.timer(Math.max(longServiceResult.getData(), 30 * 1000), TimeUnit.MILLISECONDS).subscribe(aLong -> {
|
||||
regionCheck();
|
||||
});
|
||||
}
|
||||
}).subscribe();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTeenagerMode() {
|
||||
@@ -591,5 +624,16 @@ public class InitialModel extends BaseModel implements IInitialModel {
|
||||
@GET("act/seize-treasure/status")
|
||||
Single<ServiceResult<FairyOpenInfo>> getFairyOpenInfo();
|
||||
|
||||
/**
|
||||
* 地区检测
|
||||
*
|
||||
* @param lang 语言
|
||||
* @param mcc 运营商码
|
||||
* @return
|
||||
*/
|
||||
@POST("/ipRegion/check")
|
||||
@FormUrlEncoded
|
||||
Single<ServiceResult<Long>> regionCheck(@Field("lang") String lang, @Field("mcc") String mcc);
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.chuhai.utils.TelephonyUtils;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
import com.yizhuan.xchat_android_core.utils.APIEncryptUtil;
|
||||
import com.yizhuan.xchat_android_core.utils.OaidUtil;
|
||||
@@ -34,6 +35,12 @@ public class ParamsInterceptor implements Interceptor {
|
||||
|
||||
private Map<String, String> mHttpParams;
|
||||
|
||||
// 运营商码
|
||||
private String operatorCode;
|
||||
|
||||
// 运营商码的获取时间
|
||||
private long operatorCodeTime;
|
||||
|
||||
public ParamsInterceptor(Map<String, String> params) {
|
||||
this.mHttpParams = params;
|
||||
}
|
||||
@@ -97,10 +104,13 @@ public class ParamsInterceptor implements Interceptor {
|
||||
// Log.e("ParamsInterceptor", " url: " + oldRequest.url()+ " params Map : " + paramsMap.toString());
|
||||
|
||||
long uid = 0;
|
||||
String ticket = "";
|
||||
String ticket;
|
||||
|
||||
uid = AuthModel.get().getCurrentUid();
|
||||
ticket = AuthModel.get().getTicket();
|
||||
if (ticket == null) {
|
||||
ticket = "";
|
||||
}
|
||||
|
||||
String timestamp = String.valueOf(System.currentTimeMillis());
|
||||
paramsMap.put("pub_timestamp", timestamp);
|
||||
@@ -124,7 +134,6 @@ public class ParamsInterceptor implements Interceptor {
|
||||
// Log.e("ParamsInterceptor", " url: " + oldRequest.url()+ " final params Map : " + paramsMap.toString());
|
||||
// Log.e("ParamsInterceptor", "timestamp:"+timestamp + " url: " + oldRequest.url()+ " sign : " + signStr);
|
||||
|
||||
|
||||
Headers headers = oldRequest.headers().newBuilder()
|
||||
.add("pub_ticket", ticket)
|
||||
.add("pub_uid", uid == 0 ? "" : String.valueOf(uid))
|
||||
@@ -137,6 +146,7 @@ public class ParamsInterceptor implements Interceptor {
|
||||
}
|
||||
builder.addQueryParameter("pub_timestamp", timestamp);
|
||||
builder.addQueryParameter("pub_sign", signStr);
|
||||
addHeaderWithOperator(builder);
|
||||
Request newRequest = oldRequest.newBuilder()
|
||||
.method(oldRequest.method(), oldRequest.body())
|
||||
.headers(headers)
|
||||
@@ -146,5 +156,19 @@ public class ParamsInterceptor implements Interceptor {
|
||||
|
||||
}
|
||||
|
||||
private void addHeaderWithOperator(HttpUrl.Builder builder) {
|
||||
if ((System.currentTimeMillis() - operatorCodeTime) > (1000 * 60 * 10)) {
|
||||
loadOperatorCode();
|
||||
}
|
||||
builder.addQueryParameter("mcc", operatorCode);
|
||||
}
|
||||
|
||||
private void loadOperatorCode() {
|
||||
if (TelephonyUtils.INSTANCE.isChinaOperator()) {
|
||||
operatorCode = "460";
|
||||
} else {
|
||||
operatorCode = TelephonyUtils.INSTANCE.getOperatorFirstSim();
|
||||
}
|
||||
operatorCodeTime = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
|
@@ -37,7 +37,6 @@ import com.yizhuan.xchat_android_core.user.event.CurrentUserInfoCompleteFailEven
|
||||
import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent;
|
||||
import com.yizhuan.xchat_android_core.user.event.NeedVerifyBoundAuthCodeEvent;
|
||||
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
|
||||
import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
|
||||
import com.yizhuan.xchat_android_library.utils.ListUtils;
|
||||
@@ -153,11 +152,7 @@ public final class UserModel extends BaseModel implements IUserModel {
|
||||
UserInfo userInfo = userResult.getData();
|
||||
//用户信息不全的情况下,currentUserInfo并不会被保存,这里单独保存下预填写的邀请码...
|
||||
preFillInviteCode = userInfo.getPrefillInviteCode();
|
||||
boolean isBoundAuthPhone = DemoCache.readBoundAuthCode();
|
||||
if (isBoundAuthPhone && (TextUtils.isEmpty(userInfo.getNick()) || TextUtils.isEmpty(userInfo.getAvatar()))) {
|
||||
EventBus.getDefault().post(new NeedVerifyBoundAuthCodeEvent());
|
||||
return Single.error(new Throwable("need verify bound auth code"));
|
||||
} else if (TextUtils.isEmpty(userInfo.getNick()) || TextUtils.isEmpty(userInfo.getAvatar())) {
|
||||
if (TextUtils.isEmpty(userInfo.getNick()) || TextUtils.isEmpty(userInfo.getAvatar())) {
|
||||
//首次注册需要完善昵称和头像
|
||||
EventBus.getDefault().post(new NeedCompleteInfoEvent());
|
||||
return Single.error(new Throwable("need nick and avatar"));
|
||||
|
@@ -1,8 +0,0 @@
|
||||
package com.yizhuan.xchat_android_core.user.event;
|
||||
|
||||
/**
|
||||
* create by lvzebiao on 2018/8/31
|
||||
*/
|
||||
public class NeedVerifyBoundAuthCodeEvent {
|
||||
|
||||
}
|
@@ -63,13 +63,14 @@ public final class RxNetManager {
|
||||
|
||||
if (RxNetLog.DEBUG) {
|
||||
//正式环境千万不要加这玩意,为了方便日志查看,拦截器里面加了synchronized关键字,接口请求是串行的
|
||||
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
|
||||
@Override
|
||||
public void log(String message) {
|
||||
RxNetLog.d("OKHttp-------%s", message);
|
||||
}
|
||||
});
|
||||
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
||||
// HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
|
||||
// @Override
|
||||
// public void log(String message) {
|
||||
// RxNetLog.d("OKHttp-------%s", message);
|
||||
// }
|
||||
// });
|
||||
okhttp3.logging.HttpLoggingInterceptor loggingInterceptor = new okhttp3.logging.HttpLoggingInterceptor();
|
||||
loggingInterceptor.setLevel(okhttp3.logging.HttpLoggingInterceptor.Level.BODY);
|
||||
mBuilder.addInterceptor(loggingInterceptor);
|
||||
|
||||
mBuilder.addNetworkInterceptor(new StethoInterceptor());
|
||||
|
@@ -0,0 +1,19 @@
|
||||
package com.chuhai.utils
|
||||
|
||||
import android.os.Build
|
||||
import android.os.LocaleList
|
||||
import java.util.Locale
|
||||
|
||||
/**
|
||||
* Created by Max on 2023/11/17 16:12
|
||||
* Desc:
|
||||
**/
|
||||
object LanguageUtils {
|
||||
fun getSystemLanguage(): Locale {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
LocaleList.getDefault()[0]
|
||||
} else {
|
||||
Locale.getDefault()
|
||||
}
|
||||
}
|
||||
}
|
133
library/src/module_utils/java/com/chuhai/utils/TelephonyUtils.kt
Normal file
133
library/src/module_utils/java/com/chuhai/utils/TelephonyUtils.kt
Normal file
@@ -0,0 +1,133 @@
|
||||
package com.chuhai.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.telephony.TelephonyManager
|
||||
import com.chuhai.utils.log.ILog
|
||||
|
||||
/**
|
||||
* Created by Max on 2023/11/14 10:17
|
||||
* Desc:TelephonyManager 相关工具
|
||||
**/
|
||||
object TelephonyUtils : ILog {
|
||||
|
||||
/**
|
||||
* 是否为中国运营商(任意卡属于中国就为true)
|
||||
*/
|
||||
fun isChinaOperator(): Boolean {
|
||||
val tm =
|
||||
AppUtils.getApp().getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager
|
||||
?: return false
|
||||
if (tm.simState == TelephonyManager.SIM_STATE_READY) {
|
||||
if (!tm.simOperator.isNullOrEmpty() && tm.simOperator.startsWith("460")) {
|
||||
return true
|
||||
}
|
||||
if (isChainOperator(tm.simOperatorName)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
if (!tm.networkOperator.isNullOrEmpty() && tm.networkOperator.startsWith("460")) {
|
||||
return true
|
||||
}
|
||||
if (isChainOperator(tm.networkOperatorName)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运营商(优先SIM)
|
||||
*/
|
||||
fun getOperatorFirstSim(): String? {
|
||||
val operator = getSimOperator()
|
||||
return if (operator.isNullOrEmpty()) {
|
||||
getNetWorkOperator()
|
||||
} else {
|
||||
operator
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取SIM运营商名称
|
||||
*/
|
||||
fun getSimOperator(): String? {
|
||||
val tm =
|
||||
AppUtils.getApp().getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager
|
||||
?: return null
|
||||
if (tm.simState != TelephonyManager.SIM_STATE_READY) {
|
||||
logD("SIM状态不对:${tm.simState}")
|
||||
return null
|
||||
}
|
||||
val simOperator = tm.simOperator
|
||||
logD("getSimOperator()获取的MCC+MNC为:$simOperator")
|
||||
logD("getOperatorName()方法获取的运营商名称为:${tm.simOperatorName} ")
|
||||
logD("通过getSimOperator()人为判断的运营商名称是: ${getOperatorName(simOperator)}")
|
||||
return simOperator
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网络运营商
|
||||
*/
|
||||
fun getNetWorkOperator(): String? {
|
||||
val tm = AppUtils.getApp().getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager
|
||||
?: return null
|
||||
//用于判断拨号那张卡的运营商
|
||||
val networkOperator = tm.networkOperator
|
||||
logD("getNetWorkOperator() 获取的MCC+MNC为:$networkOperator")
|
||||
logD("getNetWorkOperator() phoneType:${tm.phoneType}")
|
||||
logD("getNetworkOperatorName()方法获取的网络类型名称是: ${tm.networkOperatorName}")
|
||||
logD("通过getNetWorkOperator()人为判断的运营商名称是: ${getOperatorName(networkOperator)}")
|
||||
return tm.networkOperator
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否中国运营商
|
||||
*/
|
||||
private fun isChainOperator(operatorName: String?): Boolean {
|
||||
if (operatorName == null) return false
|
||||
if (operatorName == "CUCC"
|
||||
|| operatorName == "CMCC"
|
||||
|| operatorName == "CTCC"
|
||||
|| operatorName == "CTT"
|
||||
|| operatorName.contains("中国")
|
||||
|| operatorName.contains("中國")
|
||||
) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 运营商类型
|
||||
*/
|
||||
private fun getOperatorName(simOperator: String?): String? {
|
||||
if (simOperator == null) {
|
||||
return null
|
||||
}
|
||||
return when (simOperator) {
|
||||
"46001", "46006", "46009" -> {
|
||||
// 联通
|
||||
"CUCC"
|
||||
}
|
||||
|
||||
"46000", "46002", "46004", "46007" -> {
|
||||
// 移动
|
||||
"CMCC"
|
||||
}
|
||||
|
||||
"46003", "46005", "46011" -> {
|
||||
// 电信
|
||||
"CTCC"
|
||||
}
|
||||
|
||||
"46020" -> {
|
||||
// 铁通
|
||||
"CTT"
|
||||
}
|
||||
|
||||
else -> {
|
||||
"OHTER"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user