1:添加权限说明
2:聊天添加举报按钮
This commit is contained in:
@@ -1,20 +1,24 @@
|
||||
package com.xscm.modulemain.activity;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.ImageView;
|
||||
@@ -22,6 +26,9 @@ import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
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 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.modulevocal.fragment.VocalRangeFragment;
|
||||
import com.example.modulevoice.fragment.VoiceFragment;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.permissionx.guolindev.PermissionX;
|
||||
import com.permissionx.guolindev.callback.ExplainReasonCallback;
|
||||
import com.permissionx.guolindev.callback.RequestCallback;
|
||||
import com.permissionx.guolindev.request.ExplainScope;
|
||||
import com.stx.xhb.xbanner.XBanner;
|
||||
import com.xscm.modulemain.R;
|
||||
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.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@@ -565,15 +576,15 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
|
||||
}
|
||||
|
||||
private void requestGpsPermissions() {
|
||||
|
||||
PermissionDescriptionHelper.addPermissionDescription(false, (ViewGroup) mBinding.getRoot(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION});
|
||||
PermissionX.init(this)
|
||||
// 请求精确位置权限(包含GPS定位能力)
|
||||
.permissions(
|
||||
Manifest.permission.ACCESS_FINE_LOCATION
|
||||
)
|
||||
// 权限请求结果回调
|
||||
.permissions(Manifest.permission.ACCESS_FINE_LOCATION)
|
||||
|
||||
.request(new RequestCallback() {
|
||||
@Override
|
||||
public void onResult(boolean allGranted, List<String> grantedList, List<String> deniedList) {
|
||||
PermissionDescriptionHelper.removePermissionDescription((ViewGroup) mBinding.getRoot());
|
||||
if (allGranted) {
|
||||
// Toast.makeText(MainActivity.this, "GPS权限已授予,可开始定位", Toast.LENGTH_SHORT).show();
|
||||
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)
|
||||
public void onEvent(UnreadCountEvent event) {
|
||||
|
||||
Reference in New Issue
Block a user