1:添加权限说明
2:聊天添加举报按钮
This commit is contained in:
@@ -18,11 +18,7 @@ import com.xscm.modulelogin.present.ImproveInfoPresenter;
|
|||||||
import com.xscm.modulemain.activity.MainActivity;
|
import com.xscm.modulemain.activity.MainActivity;
|
||||||
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
||||||
import com.xscm.moduleutil.bean.UserBean;
|
import com.xscm.moduleutil.bean.UserBean;
|
||||||
import com.xscm.moduleutil.utils.DateSelectDialog;
|
import com.xscm.moduleutil.utils.*;
|
||||||
import com.xscm.moduleutil.utils.GlideEngine;
|
|
||||||
import com.xscm.moduleutil.utils.ImageLoader;
|
|
||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
|
||||||
import com.xscm.moduleutil.utils.SpUtil;
|
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
|
|
||||||
|
|
||||||
@@ -201,6 +197,7 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
|
|||||||
.setSelectorUIStyle(new PictureSelectorStyle())
|
.setSelectorUIStyle(new PictureSelectorStyle())
|
||||||
.isGif(false)
|
.isGif(false)
|
||||||
.setImageEngine(GlideEngine.createGlideEngine())
|
.setImageEngine(GlideEngine.createGlideEngine())
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.setMaxSelectNum(1)
|
.setMaxSelectNum(1)
|
||||||
.isPreviewImage(true)
|
.isPreviewImage(true)
|
||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ dependencies {
|
|||||||
|
|
||||||
//播放器
|
//播放器
|
||||||
//腾讯直播sdk
|
//腾讯直播sdk
|
||||||
api('com.tencent.liteav:LiteAVSDK_Professional:10.9.0.13102')
|
// api('com.tencent.liteav:LiteAVSDK_Professional:10.9.0.13102')
|
||||||
api('com.google.android.exoplayer:exoplayer-core:2.19.1')
|
api('com.google.android.exoplayer:exoplayer-core:2.19.1')
|
||||||
api('com.google.android.exoplayer:exoplayer-ui:2.19.1')
|
api('com.google.android.exoplayer:exoplayer-ui:2.19.1')
|
||||||
api("com.egame.vap:animplayer:2.0.8")
|
api("com.egame.vap:animplayer:2.0.8")
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -220,85 +220,4 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
|
|||||||
return resources;
|
return resources;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 显示全局飘屏消息(支持任意位置飘过)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
// @Subscribe(threadMode = ThreadMode.MAIN)
|
|
||||||
// public void showPiaoPingMessage(MqttBean mqttBean) {
|
|
||||||
// WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
|
|
||||||
// if (windowManager == null) return;
|
|
||||||
//
|
|
||||||
// int screenWidth = getResources().getDisplayMetrics().widthPixels;
|
|
||||||
// int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
|
||||||
//
|
|
||||||
// WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
|
|
||||||
// WindowManager.LayoutParams.MATCH_PARENT,
|
|
||||||
// WindowManager.LayoutParams.WRAP_CONTENT,
|
|
||||||
// Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ?
|
|
||||||
// WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY :
|
|
||||||
// WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
|
|
||||||
// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
|
|
||||||
// WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
|
|
||||||
// WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
|
|
||||||
// PixelFormat.TRANSLUCENT);
|
|
||||||
//
|
|
||||||
// // 设置 Gravity 为左上角
|
|
||||||
// layoutParams.gravity = Gravity.TOP | Gravity.START;
|
|
||||||
//
|
|
||||||
// // Y 轴随机位置
|
|
||||||
//// layoutParams.y = (int) ((Math.random() * (screenHeight - 200)));
|
|
||||||
//
|
|
||||||
// // 初始 X 设为负值,确保 View 在屏幕左侧外
|
|
||||||
// layoutParams.x = -screenWidth;
|
|
||||||
//
|
|
||||||
// View piaoPingView = LayoutInflater.from(this).inflate(R.layout.item_piaoping, null);
|
|
||||||
// TextView textView = piaoPingView.findViewById(R.id.tv_name);
|
|
||||||
// TextView textView2 = piaoPingView.findViewById(R.id.tv_to_name);
|
|
||||||
// textView2.setText("送给"+mqttBean.getList().getToUserName());
|
|
||||||
// textView.setText(mqttBean.getList().getFromUserName());
|
|
||||||
// ImageUtils.loadHeadCC(mqttBean.getList().getGift_picture(), piaoPingView.findViewById(R.id.iv_piaoping));
|
|
||||||
// TextView tv_time = piaoPingView.findViewById(R.id.tv_num);
|
|
||||||
// tv_time.setText(mqttBean.getList().getNumber());
|
|
||||||
// windowManager.addView(piaoPingView, layoutParams);
|
|
||||||
//
|
|
||||||
// piaoPingView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onGlobalLayout() {
|
|
||||||
// piaoPingView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
|
||||||
//
|
|
||||||
// // 设置锚点为左上角,避免偏移干扰
|
|
||||||
// piaoPingView.setPivotX(0);
|
|
||||||
// piaoPingView.setPivotY(0);
|
|
||||||
//
|
|
||||||
// // 启动动画:从左外滑入 -> 右外滑出
|
|
||||||
// ObjectAnimator animator = ObjectAnimator.ofFloat(
|
|
||||||
// piaoPingView,
|
|
||||||
// "translationX",
|
|
||||||
// 0f, // 初始偏移为 0(此时 View 在左侧外)
|
|
||||||
// screenWidth // 向右移动整个屏幕宽度
|
|
||||||
// );
|
|
||||||
// animator.setDuration(2000); // 整个动画的时长为2秒
|
|
||||||
//
|
|
||||||
// // 强制 GPU 渲染
|
|
||||||
// piaoPingView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
|
|
||||||
//
|
|
||||||
// // 延迟显示2秒后开始滑出屏幕的动画
|
|
||||||
// piaoPingView.postDelayed(new Runnable() {
|
|
||||||
// @Override
|
|
||||||
// public void run() {
|
|
||||||
// animator.start();
|
|
||||||
// }
|
|
||||||
// }, 3000);
|
|
||||||
//
|
|
||||||
// animator.addListener(new AnimatorListenerAdapter() {
|
|
||||||
// @Override
|
|
||||||
// public void onAnimationEnd(Animator animation) {
|
|
||||||
// windowManager.removeView(piaoPingView);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,18 +72,67 @@ public class MessageListenerSingleton {
|
|||||||
|
|
||||||
private List<PublicScreenMessageListener> publicScreenListeners = new ArrayList<>();
|
private List<PublicScreenMessageListener> publicScreenListeners = new ArrayList<>();
|
||||||
|
|
||||||
// 添加监听器
|
|
||||||
|
// 替换原有的 addPublicScreenMessageListener 方法
|
||||||
public void addPublicScreenMessageListener(PublicScreenMessageListener listener) {
|
public void addPublicScreenMessageListener(PublicScreenMessageListener listener) {
|
||||||
|
if (listener == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized (publicScreenListeners) {
|
||||||
if (!publicScreenListeners.contains(listener)) {
|
if (!publicScreenListeners.contains(listener)) {
|
||||||
|
try {
|
||||||
publicScreenListeners.add(listener);
|
publicScreenListeners.add(listener);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtils.e("MessageListener", "添加 PublicScreenMessageListener 失败: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 移除监听器
|
// 同时修改 removePublicScreenMessageListener 方法
|
||||||
public void removePublicScreenMessageListener(PublicScreenMessageListener listener) {
|
public void removePublicScreenMessageListener(PublicScreenMessageListener listener) {
|
||||||
publicScreenListeners.remove(listener);
|
if (listener == null) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
synchronized (publicScreenListeners) {
|
||||||
|
try {
|
||||||
|
publicScreenListeners.remove(listener);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtils.e("MessageListener", "移除 PublicScreenMessageListener 失败: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改 notify 方法以增加保护
|
||||||
|
private void notifyPublicScreenListeners(RoomMessageEvent message) {
|
||||||
|
synchronized (publicScreenListeners) {
|
||||||
|
// 创建副本以避免并发修改异常
|
||||||
|
List<PublicScreenMessageListener> listenersCopy = new ArrayList<>(publicScreenListeners);
|
||||||
|
for (PublicScreenMessageListener listener : listenersCopy) {
|
||||||
|
try {
|
||||||
|
listener.onPublicScreenMessageReceived(message);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtils.e("MessageListener", "通知 PublicScreenMessageListener 失败: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 添加监听器
|
||||||
|
// public void addPublicScreenMessageListener(PublicScreenMessageListener listener) {
|
||||||
|
// if (!publicScreenListeners.contains(listener)) {
|
||||||
|
// publicScreenListeners.add(listener);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 移除监听器
|
||||||
|
// public void removePublicScreenMessageListener(PublicScreenMessageListener listener) {
|
||||||
|
// publicScreenListeners.remove(listener);
|
||||||
|
// }
|
||||||
|
|
||||||
private MessageListenerSingleton() {
|
private MessageListenerSingleton() {
|
||||||
if (!isInitialized) {
|
if (!isInitialized) {
|
||||||
isInitialized = true;
|
isInitialized = true;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ public class GmsLocationProvider implements LocationProvider {
|
|||||||
callback.onFailed("无法获取位置");
|
callback.onFailed("无法获取位置");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.addOnFailureListener(e -> callback.onFailed("Google Play 定位失败:" + e.getMessage()));
|
.addOnFailureListener(e -> callback.onFailed("Google Play 定位失败:" ));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:useLevel="false">
|
||||||
|
<corners android:radius="15dp" />
|
||||||
|
<solid android:color="@color/ps_color_white" />
|
||||||
|
|
||||||
|
</shape>
|
||||||
@@ -9,6 +9,7 @@ import android.text.TextUtils;
|
|||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
@@ -38,6 +39,7 @@ import com.xscm.moduleutil.bean.HeatedBean;
|
|||||||
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
||||||
import com.xscm.moduleutil.utils.ColorManager;
|
import com.xscm.moduleutil.utils.ColorManager;
|
||||||
import com.xscm.moduleutil.utils.GlideEngine;
|
import com.xscm.moduleutil.utils.GlideEngine;
|
||||||
|
import com.xscm.moduleutil.utils.PermissionDescriptionHelper;
|
||||||
import com.xscm.moduleutil.utils.location.LocationProvider;
|
import com.xscm.moduleutil.utils.location.LocationProvider;
|
||||||
import com.xscm.moduleutil.utils.location.LocationServiceFactory;
|
import com.xscm.moduleutil.utils.location.LocationServiceFactory;
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
@@ -142,7 +144,7 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
|
|||||||
mBinding.tvFb.setOnClickListener(this::onClick);
|
mBinding.tvFb.setOnClickListener(this::onClick);
|
||||||
|
|
||||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
PermissionDescriptionHelper.addPermissionDescription(false, (ViewGroup) mBinding.getRoot(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION});
|
||||||
// 请求定位权限
|
// 请求定位权限
|
||||||
ActivityCompat.requestPermissions(
|
ActivityCompat.requestPermissions(
|
||||||
(Activity) this,
|
(Activity) this,
|
||||||
@@ -164,7 +166,7 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(String errorMessage) {
|
public void onFailed(String errorMessage) {
|
||||||
Toast.makeText(ReleaseActivity.this, "定位失败:" + errorMessage, Toast.LENGTH_SHORT).show();
|
Toast.makeText(ReleaseActivity.this, "定位失败:" , Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -218,6 +220,7 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
|
|||||||
.openGallery(mimeType)
|
.openGallery(mimeType)
|
||||||
.isGif(isVideo)
|
.isGif(isVideo)
|
||||||
.setImageEngine(GlideEngine.createGlideEngine())
|
.setImageEngine(GlideEngine.createGlideEngine())
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.setMaxSelectNum(type)
|
.setMaxSelectNum(type)
|
||||||
.isPreviewImage(true)
|
.isPreviewImage(true)
|
||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
@@ -352,7 +355,7 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
|
|||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
|
PermissionDescriptionHelper.removePermissionDescription((ViewGroup) mBinding.getRoot());
|
||||||
if (requestCode == 1001) {
|
if (requestCode == 1001) {
|
||||||
LocationProvider provider = LocationServiceFactory.createBestProvider(this);
|
LocationProvider provider = LocationServiceFactory.createBestProvider(this);
|
||||||
provider.getLastKnownLocation(this, new LocationProvider.LocationCallback() {
|
provider.getLastKnownLocation(this, new LocationProvider.LocationCallback() {
|
||||||
@@ -364,7 +367,7 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(String errorMessage) {
|
public void onFailed(String errorMessage) {
|
||||||
Toast.makeText(ReleaseActivity.this, "定位失败:" + errorMessage, Toast.LENGTH_SHORT).show();
|
Toast.makeText(ReleaseActivity.this, "定位失败:", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,16 @@
|
|||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
|
||||||
<ScrollView
|
<ScrollView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -120,4 +127,5 @@
|
|||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
</layout>
|
||||||
@@ -1,20 +1,24 @@
|
|||||||
package com.xscm.modulemain.activity;
|
package com.xscm.modulemain.activity;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.Gravity;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.view.animation.Animation;
|
import android.view.animation.Animation;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
@@ -22,6 +26,9 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||||
|
import androidx.core.app.ActivityCompat;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||||
@@ -33,8 +40,11 @@ import com.example.modulecircle.fragment.CircleFragment;
|
|||||||
import com.example.modulenews.fragment.NewsFragment;
|
import com.example.modulenews.fragment.NewsFragment;
|
||||||
import com.example.modulevocal.fragment.VocalRangeFragment;
|
import com.example.modulevocal.fragment.VocalRangeFragment;
|
||||||
import com.example.modulevoice.fragment.VoiceFragment;
|
import com.example.modulevoice.fragment.VoiceFragment;
|
||||||
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
import com.permissionx.guolindev.PermissionX;
|
import com.permissionx.guolindev.PermissionX;
|
||||||
|
import com.permissionx.guolindev.callback.ExplainReasonCallback;
|
||||||
import com.permissionx.guolindev.callback.RequestCallback;
|
import com.permissionx.guolindev.callback.RequestCallback;
|
||||||
|
import com.permissionx.guolindev.request.ExplainScope;
|
||||||
import com.stx.xhb.xbanner.XBanner;
|
import com.stx.xhb.xbanner.XBanner;
|
||||||
import com.xscm.modulemain.R;
|
import com.xscm.modulemain.R;
|
||||||
import com.xscm.modulemain.contacts.HomeContacts;
|
import com.xscm.modulemain.contacts.HomeContacts;
|
||||||
@@ -63,6 +73,7 @@ import com.tencent.imsdk.v2.V2TIMValueCallback;
|
|||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -565,15 +576,15 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void requestGpsPermissions() {
|
private void requestGpsPermissions() {
|
||||||
|
|
||||||
|
PermissionDescriptionHelper.addPermissionDescription(false, (ViewGroup) mBinding.getRoot(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION});
|
||||||
PermissionX.init(this)
|
PermissionX.init(this)
|
||||||
// 请求精确位置权限(包含GPS定位能力)
|
.permissions(Manifest.permission.ACCESS_FINE_LOCATION)
|
||||||
.permissions(
|
|
||||||
Manifest.permission.ACCESS_FINE_LOCATION
|
|
||||||
)
|
|
||||||
// 权限请求结果回调
|
|
||||||
.request(new RequestCallback() {
|
.request(new RequestCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onResult(boolean allGranted, List<String> grantedList, List<String> deniedList) {
|
public void onResult(boolean allGranted, List<String> grantedList, List<String> deniedList) {
|
||||||
|
PermissionDescriptionHelper.removePermissionDescription((ViewGroup) mBinding.getRoot());
|
||||||
if (allGranted) {
|
if (allGranted) {
|
||||||
// Toast.makeText(MainActivity.this, "GPS权限已授予,可开始定位", Toast.LENGTH_SHORT).show();
|
// Toast.makeText(MainActivity.this, "GPS权限已授予,可开始定位", Toast.LENGTH_SHORT).show();
|
||||||
initLocation(); // 启动GPS定位逻辑
|
initLocation(); // 启动GPS定位逻辑
|
||||||
@@ -583,6 +594,83 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
private static final int REQUEST_CODE_LOCATION_PERMISSION = 1001;
|
||||||
|
|
||||||
|
private void requestLocationPermission() {
|
||||||
|
// 检查是否已拥有权限
|
||||||
|
if (ContextCompat.checkSelfPermission(
|
||||||
|
this,
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION
|
||||||
|
) == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
// 已授权,执行定位相关任务
|
||||||
|
performLocationTask();
|
||||||
|
}
|
||||||
|
// 判断是否需要展示解释性说明
|
||||||
|
else if (ActivityCompat.shouldShowRequestPermissionRationale(
|
||||||
|
this,
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION
|
||||||
|
)) {
|
||||||
|
// 展示自定义的解释对话框
|
||||||
|
showPermissionExplanationDialog();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 首次请求,或用户选择了"不再询问",直接请求权限
|
||||||
|
directlyRequestPermissions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showPermissionExplanationDialog() {
|
||||||
|
new AlertDialog.Builder(this)
|
||||||
|
.setTitle("需要位置权限")
|
||||||
|
.setMessage("我们使用您的位置信息来为您提供周边的地图导航服务、展示订单热力图,并为您推荐附近的订单。此功能需要获取您的位置信息。")
|
||||||
|
.setPositiveButton("同意", (dialog, which) -> {
|
||||||
|
// 用户点击同意后,请求权限
|
||||||
|
directlyRequestPermissions();
|
||||||
|
})
|
||||||
|
.setNegativeButton("取消", (dialog, which) -> {
|
||||||
|
// 处理用户取消的情况
|
||||||
|
})
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void directlyRequestPermissions() {
|
||||||
|
String[] permissionsToRequest;
|
||||||
|
|
||||||
|
// 根据Android版本决定请求的权限
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
// Android 10 (API 29) 及以上,可以同时请求前台和后台定位权限(注意:在Android 11及以后,策略有变)
|
||||||
|
permissionsToRequest = new String[] {
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION,
|
||||||
|
Manifest.permission.ACCESS_COARSE_LOCATION
|
||||||
|
// 在Android 11上,不建议在此同时申请后台权限
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
// Android 9及以下
|
||||||
|
permissionsToRequest = new String[] {
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION,
|
||||||
|
Manifest.permission.ACCESS_COARSE_LOCATION
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
ActivityCompat.requestPermissions(
|
||||||
|
this,
|
||||||
|
permissionsToRequest,
|
||||||
|
REQUEST_CODE_LOCATION_PERMISSION // 定义你的请求码,例如 1001
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void performLocationTask() {
|
||||||
|
// 执行定位任务
|
||||||
|
initLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handlePermissionDenial() {
|
||||||
|
// 处理权限被拒绝的情况
|
||||||
|
Toast.makeText(this, "位置权限被拒绝,相关功能无法使用", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
public void onEvent(UnreadCountEvent event) {
|
public void onEvent(UnreadCountEvent event) {
|
||||||
|
|||||||
@@ -1184,6 +1184,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
|
|
||||||
override fun initData() {
|
override fun initData() {
|
||||||
if (!EasyPermissions.hasPermissions(this, *permissions)) {
|
if (!EasyPermissions.hasPermissions(this, *permissions)) {
|
||||||
|
PermissionDescriptionHelper.addPermissionDescription(false,mBinding?.root as ViewGroup,permissions)
|
||||||
EasyPermissions.requestPermissions(
|
EasyPermissions.requestPermissions(
|
||||||
this, "请开启录音使用权限",
|
this, "请开启录音使用权限",
|
||||||
1, *permissions
|
1, *permissions
|
||||||
@@ -3127,26 +3128,26 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
if (pit_number != 0) View.VISIBLE else View.GONE
|
if (pit_number != 0) View.VISIBLE else View.GONE
|
||||||
rl_more?.visibility =
|
rl_more?.visibility =
|
||||||
if (pit_number == 9) View.VISIBLE else View.GONE
|
if (pit_number == 9) View.VISIBLE else View.GONE
|
||||||
rl_misc?.visibility = View.VISIBLE
|
rl_misc?.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
0 -> {
|
0 -> {
|
||||||
rl_voice?.visibility = View.VISIBLE
|
rl_voice?.visibility = View.VISIBLE
|
||||||
rl_mic?.visibility =
|
rl_mic?.visibility =
|
||||||
if (pit_number != 0) View.VISIBLE else View.GONE
|
if (pit_number != 0) View.VISIBLE else View.GONE
|
||||||
rl_misc?.visibility = View.VISIBLE
|
rl_misc?.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
5 -> {
|
5 -> {
|
||||||
rl_voice?.visibility = View.VISIBLE
|
rl_voice?.visibility = View.VISIBLE
|
||||||
rl_more?.visibility = View.GONE
|
rl_more?.visibility = View.GONE
|
||||||
rl_misc?.visibility = View.VISIBLE
|
rl_misc?.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
if (roleType != 5) {
|
if (roleType != 5) {
|
||||||
rl_misc?.visibility = View.VISIBLE
|
rl_misc?.visibility = View.GONE
|
||||||
if (userPitNumber == 9) {
|
if (userPitNumber == 9) {
|
||||||
rl_more?.visibility = View.VISIBLE
|
rl_more?.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
@@ -3156,7 +3157,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
// label_id 和 type_id 联合判断
|
// label_id 和 type_id 联合判断
|
||||||
if (mutableListOf<String>("1").contains(typeId) && "1" == labelId) {
|
if (mutableListOf<String>("1").contains(typeId) && "1" == labelId) {
|
||||||
rl_more?.visibility = View.VISIBLE
|
rl_more?.visibility = View.VISIBLE
|
||||||
rl_misc?.visibility = View.VISIBLE
|
rl_misc?.visibility = View.GONE
|
||||||
}else{
|
}else{
|
||||||
rl_more?.visibility = View.GONE
|
rl_more?.visibility = View.GONE
|
||||||
rl_misc?.visibility = View.GONE
|
rl_misc?.visibility = View.GONE
|
||||||
@@ -3994,11 +3995,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
|
|
||||||
override fun postRoomInfo(resp: RoomInfoResp?) {
|
override fun postRoomInfo(resp: RoomInfoResp?) {
|
||||||
if (resp == null) {
|
if (resp == null) {
|
||||||
// CommonAppContext.getInstance().isShow = false;
|
|
||||||
// CommonAppContext.getInstance().isPlaying = false;
|
|
||||||
// ToastUtils.showShort("您已经掉线,需要重新进入房间!");
|
|
||||||
// ARouter.getInstance().build(ARouteConstants.ME)
|
|
||||||
// .navigation();
|
|
||||||
// 只有在没有房间信息时才重新获取
|
// 只有在没有房间信息时才重新获取
|
||||||
if (mRoomInfoResp == null) {
|
if (mRoomInfoResp == null) {
|
||||||
cleanupResources()
|
cleanupResources()
|
||||||
@@ -4009,91 +4005,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
this.mRoomInfoResp = resp
|
this.mRoomInfoResp = resp
|
||||||
setview(resp)
|
setview(resp)
|
||||||
|
|
||||||
// val roomBean = resp.room_info
|
|
||||||
// if (roomBean!!.type_id.equals("6")) {
|
|
||||||
//
|
|
||||||
//// upHeight()
|
|
||||||
// initPublicScreenFragment()
|
|
||||||
// if (!isFinishing && !isDestroyed) {
|
|
||||||
// resetFragment()
|
|
||||||
// upHeight()
|
|
||||||
// } else {
|
|
||||||
// Log.e("Fragment", "Fragment transaction skipped due to state loss.")
|
|
||||||
// }
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// this.mRoomBean = roomBean
|
|
||||||
// this.mRoomUserBean = resp.user_info
|
|
||||||
// this.mRoomOwnerBean = resp.room_owner
|
|
||||||
// this.mPitList = mRoomBean!!.pit_list!!
|
|
||||||
//
|
|
||||||
// ImageUtils.loadHeadCC(resp.room_info.room_cover, mBinding!!.roomTop.avatar)
|
|
||||||
// mBinding!!.roomTop.name.text = roomBean.room_name
|
|
||||||
// mBinding!!.roomTop.idVal.text = roomBean.room_number
|
|
||||||
// if (mRoomUserBean?.getIs_room_owner() == 1) {
|
|
||||||
// mBinding!!.roomTop.btnFollow.visibility = View.GONE
|
|
||||||
// } else {
|
|
||||||
// mBinding!!.roomTop.btnFollow.visibility = View.VISIBLE
|
|
||||||
// if (resp.isCollect) {
|
|
||||||
// mBinding!!.roomTop.btnFollow.background =
|
|
||||||
// resources.getDrawable(com.xscm.moduleutil.R.mipmap.collected)
|
|
||||||
// mBinding!!.roomTop.btnFollow.text = ""
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// initPublicScreenFragment()
|
|
||||||
// if (!isFinishing && !isDestroyed) {
|
|
||||||
// resetFragment()
|
|
||||||
// upHeight()
|
|
||||||
// } else {
|
|
||||||
// Log.e("Fragment", "Fragment transaction skipped due to state loss.")
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (mRoomUserBean?.getIs_collect() == 1) {
|
|
||||||
// mBinding!!.roomTop.btnFollow.background =
|
|
||||||
// resources.getDrawable(com.xscm.moduleutil.R.mipmap.yishouc)
|
|
||||||
// mBinding!!.roomTop.btnFollow.text = ""
|
|
||||||
// } else {
|
|
||||||
//// mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.collect));
|
|
||||||
// ThemeableDrawableUtils.setThemeableRoundedBackground(
|
|
||||||
// mBinding!!.roomTop.btnFollow,
|
|
||||||
// ColorManager.getInstance().primaryColorInt,
|
|
||||||
// 53
|
|
||||||
// )
|
|
||||||
// mBinding!!.roomTop.btnFollow.setTextColor(ColorManager.getInstance().buttonColorInt)
|
|
||||||
// mBinding!!.roomTop.btnFollow.text = "收藏"
|
|
||||||
// }
|
|
||||||
// if ((resp.room_info.type_id == "3" || resp.room_info.type_id == "1" || resp.room_info.type_id == "4") && resp.room_info.label_id == "2") {
|
|
||||||
// AgoraManager.getInstance(this).isBjMusic = false
|
|
||||||
// } else {
|
|
||||||
// AgoraManager.getInstance(this).isBjMusic = true
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// AgoraManager.stopMuisc()
|
|
||||||
// if (!CommonAppContext.getInstance().isMai) {
|
|
||||||
// initializeAudio()
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (mRoomInfoResp!!.room_info.label_id == "2" || mRoomInfoResp!!.room_info.type_id == "7") {
|
|
||||||
// mBinding!!.rlMore.visibility = View.GONE
|
|
||||||
// // mBinding.rlMisc.setVisibility(GONE);
|
|
||||||
// } else if (mRoomInfoResp!!.room_info.label_id == "1" || mRoomInfoResp!!.room_info.type_id == "3" || mRoomInfoResp!!.room_info.type_id == "4" ||
|
|
||||||
// mRoomInfoResp!!.room_info.type_id == "8"
|
|
||||||
// ) {
|
|
||||||
// mBinding!!.rlMore.visibility = View.GONE
|
|
||||||
// mBinding!!.rlMisc.visibility = View.VISIBLE
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (resp.room_info.type_id == "7" || resp.room_info.type_id == "2") {
|
|
||||||
// mBinding!!.rlMore.visibility = View.GONE
|
|
||||||
// mBinding!!.rlMisc.visibility = View.GONE
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (mRoomInfoResp!!.hour_ranking_open == 1) {
|
|
||||||
// mBinding!!.clXsb.visibility = View.VISIBLE
|
|
||||||
// } else {
|
|
||||||
// mBinding!!.clXsb.visibility = View.GONE
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun upHeight() {
|
fun upHeight() {
|
||||||
@@ -4211,15 +4122,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
"@@@",
|
"@@@",
|
||||||
"上一个房间的roonid" + AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId
|
"上一个房间的roonid" + AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId
|
||||||
)
|
)
|
||||||
// MvpPre.getRoomIn(AgoraManager.getInstance(context).getLastRoomId(), "");
|
|
||||||
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "电影房")
|
|
||||||
// .withString("roomId", AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId)
|
|
||||||
// .navigation()
|
|
||||||
// RoomManager.getInstance().fetchRoomDataAndEnter(
|
|
||||||
// this,
|
|
||||||
// AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId,
|
|
||||||
// ""
|
|
||||||
// )
|
|
||||||
if (AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId != null && !AgoraManager.getInstance(
|
if (AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId != null && !AgoraManager.getInstance(
|
||||||
OkDownloadProvider.context
|
OkDownloadProvider.context
|
||||||
).lastRoomId.isEmpty()
|
).lastRoomId.isEmpty()
|
||||||
@@ -4227,8 +4129,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
MvpPre?.getRoomIn(AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId, "")
|
MvpPre?.getRoomIn(AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId, "")
|
||||||
}
|
}
|
||||||
AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId = ""
|
AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId = ""
|
||||||
// setviewyc(true);
|
|
||||||
// exitFullScreen()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun userGuanzSuccess(s: String) {
|
override fun userGuanzSuccess(s: String) {
|
||||||
@@ -4529,12 +4429,14 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onPermissionsGranted(requestCode: Int, perms: List<String>) {
|
override fun onPermissionsGranted(requestCode: Int, perms: List<String>) {
|
||||||
|
PermissionDescriptionHelper.removePermissionDescription(mBinding?.root as ViewGroup)
|
||||||
if (perms.contains(Manifest.permission.RECORD_AUDIO)) {
|
if (perms.contains(Manifest.permission.RECORD_AUDIO)) {
|
||||||
Log.d("Permission", "录音权限已授权")
|
Log.d("Permission", "录音权限已授权")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPermissionsDenied(requestCode: Int, perms: List<String>) {
|
override fun onPermissionsDenied(requestCode: Int, perms: List<String>) {
|
||||||
|
PermissionDescriptionHelper.removePermissionDescription(mBinding?.root as ViewGroup)
|
||||||
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
|
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
|
||||||
AppSettingsDialog.Builder(this).build().show()
|
AppSettingsDialog.Builder(this).build().show()
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import com.xscm.moduleutil.bean.RoomBgBean;
|
|||||||
import com.xscm.moduleutil.dialog.ConfirmDialog;
|
import com.xscm.moduleutil.dialog.ConfirmDialog;
|
||||||
import com.xscm.moduleutil.utils.GlideEngine;
|
import com.xscm.moduleutil.utils.GlideEngine;
|
||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
import com.xscm.moduleutil.utils.ImageUtils;
|
||||||
|
import com.xscm.moduleutil.utils.PermissionDescriptionHelper;
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
@@ -106,6 +107,7 @@ public class RoomBackgroundDialogFragment extends BaseMvpDialogFragment<RoomBack
|
|||||||
.openGallery(mimeType)
|
.openGallery(mimeType)
|
||||||
.isGif(isVideo)
|
.isGif(isVideo)
|
||||||
.setImageEngine(GlideEngine.createGlideEngine())
|
.setImageEngine(GlideEngine.createGlideEngine())
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.setMaxSelectNum(type)
|
.setMaxSelectNum(type)
|
||||||
.isPreviewImage(true)
|
.isPreviewImage(true)
|
||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
|
|||||||
@@ -31,10 +31,7 @@ import com.luck.picture.lib.config.PictureConfig;
|
|||||||
import com.luck.picture.lib.entity.LocalMedia;
|
import com.luck.picture.lib.entity.LocalMedia;
|
||||||
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
||||||
import com.xscm.moduleutil.bean.AlbumBean;
|
import com.xscm.moduleutil.bean.AlbumBean;
|
||||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
import com.xscm.moduleutil.utils.*;
|
||||||
import com.xscm.moduleutil.utils.GlideEngine;
|
|
||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
|
||||||
import com.xscm.moduleutil.utils.SpUtil;
|
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
import com.xscm.moduleutil.widget.dialog.ShareDialog;
|
import com.xscm.moduleutil.widget.dialog.ShareDialog;
|
||||||
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
||||||
@@ -205,7 +202,7 @@ public class AlbumDetailActivity extends BaseMvpActivity<AlbumDetailPresenter, A
|
|||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
.setOutputCameraDir(Constants.FILE_PATH)
|
.setOutputCameraDir(Constants.FILE_PATH)
|
||||||
.isOriginalSkipCompress(true)
|
.isOriginalSkipCompress(true)
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.forResult(requestCode); //结果回调onActivityResult code
|
.forResult(requestCode); //结果回调onActivityResult code
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,10 +21,7 @@ import com.luck.picture.lib.entity.LocalMedia;
|
|||||||
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
||||||
import com.xscm.moduleutil.bean.AlbumBean;
|
import com.xscm.moduleutil.bean.AlbumBean;
|
||||||
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
||||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
import com.xscm.moduleutil.utils.*;
|
||||||
import com.xscm.moduleutil.utils.ColorManager;
|
|
||||||
import com.xscm.moduleutil.utils.GlideEngine;
|
|
||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
import com.zcw.togglebutton.ToggleButton;
|
import com.zcw.togglebutton.ToggleButton;
|
||||||
|
|
||||||
@@ -189,7 +186,7 @@ public class CreateAlbumActivity extends BaseMvpActivity<MyAlbumPresenter, Activ
|
|||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
.setOutputCameraDir(Constants.FILE_PATH)
|
.setOutputCameraDir(Constants.FILE_PATH)
|
||||||
.isOriginalSkipCompress(true)
|
.isOriginalSkipCompress(true)
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.forResult(requestCode); //结果回调onActivityResult code
|
.forResult(requestCode); //结果回调onActivityResult code
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,7 @@ import com.luck.picture.lib.entity.LocalMedia;
|
|||||||
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
||||||
import com.xscm.moduleutil.bean.room.RoomInfoResp;
|
import com.xscm.moduleutil.bean.room.RoomInfoResp;
|
||||||
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
||||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
import com.xscm.moduleutil.utils.*;
|
||||||
import com.xscm.moduleutil.utils.ColorManager;
|
|
||||||
import com.xscm.moduleutil.utils.GlideEngine;
|
|
||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -224,7 +221,7 @@ public class CreatedRoomActivity extends BaseMvpActivity<CreatedRoomPresenter, A
|
|||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
.setOutputCameraDir(Constants.FILE_PATH)
|
.setOutputCameraDir(Constants.FILE_PATH)
|
||||||
.isOriginalSkipCompress(true)
|
.isOriginalSkipCompress(true)
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.forResult(requestCode); //结果回调onActivityResult code
|
.forResult(requestCode); //结果回调onActivityResult code
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,28 @@
|
|||||||
package com.example.modulevocal.activity;
|
package com.example.modulevocal.activity;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
|
import android.text.Spannable;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.text.style.AbsoluteSizeSpan;
|
||||||
|
import android.text.style.ForegroundColorSpan;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import android.widget.RelativeLayout;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
|
import androidx.constraintlayout.widget.ConstraintSet;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
||||||
|
|
||||||
@@ -30,15 +41,16 @@ import com.luck.picture.lib.basic.PictureSelector;
|
|||||||
import com.luck.picture.lib.config.PictureConfig;
|
import com.luck.picture.lib.config.PictureConfig;
|
||||||
import com.luck.picture.lib.engine.CropFileEngine;
|
import com.luck.picture.lib.engine.CropFileEngine;
|
||||||
import com.luck.picture.lib.entity.LocalMedia;
|
import com.luck.picture.lib.entity.LocalMedia;
|
||||||
|
import com.luck.picture.lib.interfaces.OnPermissionDescriptionListener;
|
||||||
|
import com.luck.picture.lib.permissions.PermissionConfig;
|
||||||
|
import com.luck.picture.lib.utils.DensityUtil;
|
||||||
|
import com.luck.picture.lib.widget.MediumBoldTextView;
|
||||||
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
import com.xscm.moduleutil.activity.BaseMvpActivity;
|
||||||
import com.xscm.moduleutil.bean.HeatedBean;
|
import com.xscm.moduleutil.bean.HeatedBean;
|
||||||
import com.xscm.moduleutil.bean.UserBean;
|
import com.xscm.moduleutil.bean.UserBean;
|
||||||
import com.xscm.moduleutil.bean.UserInfo;
|
import com.xscm.moduleutil.bean.UserInfo;
|
||||||
import com.xscm.moduleutil.bean.XBannerData;
|
import com.xscm.moduleutil.bean.XBannerData;
|
||||||
import com.xscm.moduleutil.utils.DateSelectDialog;
|
import com.xscm.moduleutil.utils.*;
|
||||||
import com.xscm.moduleutil.utils.GlideEngine;
|
|
||||||
import com.xscm.moduleutil.utils.ImageUtils;
|
|
||||||
import com.xscm.moduleutil.utils.SpUtil;
|
|
||||||
import com.xscm.moduleutil.widget.Constants;
|
import com.xscm.moduleutil.widget.Constants;
|
||||||
import com.xscm.moduleutil.widget.img.FullScreenUtil;
|
import com.xscm.moduleutil.widget.img.FullScreenUtil;
|
||||||
import com.xscm.moduleutil.widget.picker.PictureSelectorUtil;
|
import com.xscm.moduleutil.widget.picker.PictureSelectorUtil;
|
||||||
@@ -188,7 +200,7 @@ public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, Act
|
|||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
.setOutputCameraDir(Constants.FILE_PATH)
|
.setOutputCameraDir(Constants.FILE_PATH)
|
||||||
.isOriginalSkipCompress(true)
|
.isOriginalSkipCompress(true)
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.forResult(requestCode); //结果回调onActivityResult code
|
.forResult(requestCode); //结果回调onActivityResult code
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -202,6 +214,7 @@ public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, Act
|
|||||||
.isDisplayCamera(false)
|
.isDisplayCamera(false)
|
||||||
.setImageEngine(GlideEngine.createGlideEngine())
|
.setImageEngine(GlideEngine.createGlideEngine())
|
||||||
.setImageEngine(GlideEngine.createGlideEngine()) // 选择器展示不出图片则添加
|
.setImageEngine(GlideEngine.createGlideEngine()) // 选择器展示不出图片则添加
|
||||||
|
.setPermissionDescriptionListener(PermissionDescriptionHelper.createListener())
|
||||||
.setCropEngine(new CropFileEngine() {
|
.setCropEngine(new CropFileEngine() {
|
||||||
@Override
|
@Override
|
||||||
public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
|
public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
|
||||||
@@ -240,6 +253,8 @@ public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, Act
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private int totalUploadCount;//需要上传的数据的总数
|
private int totalUploadCount;//需要上传的数据的总数
|
||||||
private int uploadedCount;//已经上传的数据的个数
|
private int uploadedCount;//已经上传的数据的个数
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.xscm.moduleutil.base.CommonAppContext;
|
|||||||
import com.xscm.moduleutil.bean.FirstChargeGiftBean;
|
import com.xscm.moduleutil.bean.FirstChargeGiftBean;
|
||||||
import com.xscm.moduleutil.dialog.FirstChargeDialog;
|
import com.xscm.moduleutil.dialog.FirstChargeDialog;
|
||||||
import com.xscm.moduleutil.dialog.RealNameDialog;
|
import com.xscm.moduleutil.dialog.RealNameDialog;
|
||||||
|
import com.xscm.moduleutil.dialog.YouthModelDialog;
|
||||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
import com.xscm.moduleutil.utils.ARouteConstants;
|
||||||
import com.xscm.moduleutil.utils.SpUtil;
|
import com.xscm.moduleutil.utils.SpUtil;
|
||||||
import com.xscm.moduleutil.utils.config.ConfigManager;
|
import com.xscm.moduleutil.utils.config.ConfigManager;
|
||||||
@@ -63,7 +64,8 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
|||||||
|
|
||||||
private void onClick(View view) {
|
private void onClick(View view) {
|
||||||
if (view.getId() == R.id.ll_youth) {
|
if (view.getId() == R.id.ll_youth) {
|
||||||
startActivity(new Intent(this, UnderageActivity.class));
|
// startActivity(new Intent(this, UnderageActivity.class));
|
||||||
|
showYouthModelDialog();
|
||||||
} else if (view.getId() == R.id.ll_notification) {
|
} else if (view.getId() == R.id.ll_notification) {
|
||||||
startActivity(new Intent(this, NotificationActivity.class));
|
startActivity(new Intent(this, NotificationActivity.class));
|
||||||
} else if (view.getId() == R.id.ll_hmd) {
|
} else if (view.getId() == R.id.ll_hmd) {
|
||||||
@@ -162,7 +164,19 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void showYouthModelDialog() {
|
||||||
|
YouthModelDialog youthModelDialog = new YouthModelDialog(this, null);
|
||||||
|
youthModelDialog.show();
|
||||||
|
youthModelDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
||||||
|
@Override
|
||||||
|
public void onDismiss(DialogInterface dialog) {
|
||||||
|
// 记录已经显示过青少年模式弹窗
|
||||||
|
dialog.dismiss();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
protected int getLayoutId() {
|
protected int getLayoutId() {
|
||||||
return R.layout.activity_setting;
|
return R.layout.activity_setting;
|
||||||
|
|||||||
@@ -3,10 +3,14 @@ package com.example.modulevocal.presenter;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.example.modulevocal.conacts.SettingConacts;
|
import com.example.modulevocal.conacts.SettingConacts;
|
||||||
|
import com.xscm.moduleutil.bean.ActivitiesPermission;
|
||||||
import com.xscm.moduleutil.http.BaseObserver;
|
import com.xscm.moduleutil.http.BaseObserver;
|
||||||
import com.xscm.moduleutil.presenter.BasePresenter;
|
import com.xscm.moduleutil.presenter.BasePresenter;
|
||||||
|
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
public class SettingPresenter extends BasePresenter<SettingConacts.View> implements SettingConacts.IMePre {
|
public class SettingPresenter extends BasePresenter<SettingConacts.View> implements SettingConacts.IMePre {
|
||||||
public SettingPresenter(SettingConacts.View view, Context context) {
|
public SettingPresenter(SettingConacts.View view, Context context) {
|
||||||
@@ -43,4 +47,5 @@ public class SettingPresenter extends BasePresenter<SettingConacts.View> impleme
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
android:id="@+id/ll_youth"
|
android:id="@+id/ll_youth"
|
||||||
style="@style/My_Info_Item_LL_Style"
|
style="@style/My_Info_Item_LL_Style"
|
||||||
android:background="@drawable/bg_r15_white"
|
android:background="@drawable/bg_r15_white"
|
||||||
android:visibility="gone"
|
|
||||||
>
|
>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|||||||
@@ -1,23 +1,32 @@
|
|||||||
package com.tencent.qcloud.tuikit.tuichat.classicui.page;
|
package com.tencent.qcloud.tuikit.tuichat.classicui.page;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import com.alibaba.android.arouter.launcher.ARouter;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.tencent.imsdk.relationship.UserInfo;
|
||||||
import com.tencent.qcloud.tuicore.TUIConstants;
|
import com.tencent.qcloud.tuicore.TUIConstants;
|
||||||
import com.tencent.qcloud.tuicore.TUICore;
|
import com.tencent.qcloud.tuicore.TUICore;
|
||||||
import com.tencent.qcloud.tuicore.interfaces.TUIExtensionEventListener;
|
import com.tencent.qcloud.tuicore.interfaces.TUIExtensionEventListener;
|
||||||
import com.tencent.qcloud.tuicore.interfaces.TUIExtensionInfo;
|
import com.tencent.qcloud.tuicore.interfaces.TUIExtensionInfo;
|
||||||
import com.tencent.qcloud.tuicore.interfaces.TUIValueCallback;
|
import com.tencent.qcloud.tuicore.interfaces.TUIValueCallback;
|
||||||
|
import com.tencent.qcloud.tuikit.timcommon.bean.UserBean;
|
||||||
import com.tencent.qcloud.tuikit.tuichat.R;
|
import com.tencent.qcloud.tuikit.tuichat.R;
|
||||||
import com.tencent.qcloud.tuikit.tuichat.TUIChatConstants;
|
import com.tencent.qcloud.tuikit.tuichat.TUIChatConstants;
|
||||||
import com.tencent.qcloud.tuikit.tuichat.bean.C2CChatInfo;
|
import com.tencent.qcloud.tuikit.tuichat.bean.C2CChatInfo;
|
||||||
import com.tencent.qcloud.tuikit.tuichat.bean.ChatInfo;
|
import com.tencent.qcloud.tuikit.tuichat.bean.ChatInfo;
|
||||||
|
import com.tencent.qcloud.tuikit.tuichat.classicui.widget.input.InputView;
|
||||||
import com.tencent.qcloud.tuikit.tuichat.presenter.C2CChatPresenter;
|
import com.tencent.qcloud.tuikit.tuichat.presenter.C2CChatPresenter;
|
||||||
import com.tencent.qcloud.tuikit.tuichat.presenter.FriendProfilePresenter;
|
import com.tencent.qcloud.tuikit.tuichat.presenter.FriendProfilePresenter;
|
||||||
import com.tencent.qcloud.tuikit.tuichat.util.TUIChatLog;
|
import com.tencent.qcloud.tuikit.tuichat.util.TUIChatLog;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -63,36 +72,89 @@ public class TUIC2CChatFragment extends TUIBaseChatFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setTitleBarExtension() {
|
private void setTitleBarExtension() {
|
||||||
titleBar.getRightGroup().setVisibility(View.GONE);
|
titleBar.getRightGroup().setVisibility(View.VISIBLE);
|
||||||
titleBar.setRightIcon(R.drawable.chat_title_bar_more_menu_icon);
|
titleBar.setRightIcon(R.drawable.chat_title_bar_more_menu_icon);
|
||||||
titleBar.setOnRightClickListener(new View.OnClickListener() {
|
titleBar.setOnRightClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
Map<String, Object> param = new HashMap<>();
|
// Map<String, Object> param = new HashMap<>();
|
||||||
param.put(TUIConstants.TUIChat.Extension.ChatNavigationMoreItem.USER_ID, chatInfo.getId());
|
// param.put(TUIConstants.TUIChat.Extension.ChatNavigationMoreItem.USER_ID, chatInfo.getId());
|
||||||
List<TUIExtensionInfo> extensionInfoList =
|
// List<TUIExtensionInfo> extensionInfoList =
|
||||||
TUICore.getExtensionList(TUIConstants.TUIChat.Extension.ChatNavigationMoreItem.CLASSIC_EXTENSION_ID, param);
|
// TUICore.getExtensionList(TUIConstants.TUIChat.Extension.ChatNavigationMoreItem.CLASSIC_EXTENSION_ID, param);
|
||||||
if (!extensionInfoList.isEmpty()) {
|
// if (!extensionInfoList.isEmpty()) {
|
||||||
Collections.sort(extensionInfoList, new Comparator<TUIExtensionInfo>() {
|
// Collections.sort(extensionInfoList, new Comparator<TUIExtensionInfo>() {
|
||||||
|
// @Override
|
||||||
|
// public int compare(TUIExtensionInfo o1, TUIExtensionInfo o2) {
|
||||||
|
// return o2.getWeight() - o1.getWeight();
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// TUIExtensionInfo extensionInfo = extensionInfoList.get(0);
|
||||||
|
// TUIExtensionEventListener eventListener = extensionInfo.getExtensionListener();
|
||||||
|
// if (eventListener != null) {
|
||||||
|
// Map<String, Object> map = new HashMap<>();
|
||||||
|
// map.put(TUIConstants.TUIChat.Extension.ChatNavigationMoreItem.USER_ID, chatInfo.getId());
|
||||||
|
// map.put(TUIChatConstants.CHAT_BACKGROUND_URI, mChatBackgroundThumbnailUrl);
|
||||||
|
// eventListener.onClicked(map);
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// String userId = chatInfo.getId();
|
||||||
|
// openFriendProfile(userId);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 显示默认菜单,包含举报功能
|
||||||
|
showReportPopupMenu(v);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showReportPopupMenu(View anchorView) {
|
||||||
|
// 创建 PopupMenu 或自定义 PopupWindow
|
||||||
|
android.widget.PopupMenu popupMenu = new android.widget.PopupMenu(getContext(), anchorView);
|
||||||
|
|
||||||
|
// 添加举报选项
|
||||||
|
popupMenu.getMenu().add("举报");
|
||||||
|
|
||||||
|
// 设置点击监听
|
||||||
|
popupMenu.setOnMenuItemClickListener(new android.widget.PopupMenu.OnMenuItemClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(TUIExtensionInfo o1, TUIExtensionInfo o2) {
|
public boolean onMenuItemClick(android.view.MenuItem item) {
|
||||||
return o2.getWeight() - o1.getWeight();
|
if ("举报".equals(item.getTitle())) {
|
||||||
|
ARouter.getInstance().build("/moduleUtil/WebViewActivity").withString("url", "https://vespa.qxyushen.top/h5/web/index.html#/pages/feedback/report?id=?id="+getToken()+"&fromType=1&fromId="+ getUserInfo().getUser_id()).navigation();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
TUIExtensionInfo extensionInfo = extensionInfoList.get(0);
|
|
||||||
TUIExtensionEventListener eventListener = extensionInfo.getExtensionListener();
|
popupMenu.show();
|
||||||
if (eventListener != null) {
|
|
||||||
Map<String, Object> map = new HashMap<>();
|
|
||||||
map.put(TUIConstants.TUIChat.Extension.ChatNavigationMoreItem.USER_ID, chatInfo.getId());
|
|
||||||
map.put(TUIChatConstants.CHAT_BACKGROUND_URI, mChatBackgroundThumbnailUrl);
|
|
||||||
eventListener.onClicked(map);
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
String userId = chatInfo.getId();
|
private String getToken(){
|
||||||
openFriendProfile(userId);
|
SharedPreferences sp = getContext().getSharedPreferences("Vespa", Context.MODE_PRIVATE);
|
||||||
|
return sp.getString("token","");
|
||||||
}
|
}
|
||||||
|
private UserIfo getUserInfo(){
|
||||||
|
SharedPreferences sp = getContext().getSharedPreferences("Vespa", Context.MODE_PRIVATE);
|
||||||
|
String s= sp.getString("userInfo","");
|
||||||
|
if (TextUtils.isEmpty(s)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Gson Gson = new Gson();
|
||||||
|
UserIfo userInd =Gson.fromJson(s, UserIfo.class);
|
||||||
|
return userInd;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class UserIfo{
|
||||||
|
String user_id;
|
||||||
|
|
||||||
|
public String getUser_id() {
|
||||||
|
return user_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUser_id(String user_id) {
|
||||||
|
this.user_id = user_id;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openFriendProfile(String userId) {
|
private void openFriendProfile(String userId) {
|
||||||
|
|||||||
BIN
tuichat/src/main/res/drawable-xxxhdpi/ic_topbar_back_dark.webp
Normal file
BIN
tuichat/src/main/res/drawable-xxxhdpi/ic_topbar_back_dark.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 250 B |
Reference in New Issue
Block a user