1.定位的修改
This commit is contained in:
@@ -60,5 +60,7 @@ dependencies {
|
||||
implementation (libs.arouter.api.v150)
|
||||
//annotationProcessor
|
||||
annotationProcessor libs.arouter.compiler
|
||||
implementation libs.permissionx
|
||||
|
||||
}
|
||||
apply plugin: 'com.alibaba.arouter' // ⚠️ 添加这一行
|
||||
@@ -1,6 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<!-- 前台定位权限 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<!-- 后台定位权限(Android 10+) -->
|
||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
||||
<application
|
||||
>
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -36,6 +37,12 @@ import com.example.modulenews.fragment.NewsFragment;
|
||||
import com.example.moduleroom.activity.RoomActivity;
|
||||
import com.example.modulevocal.fragment.VocalRangeFragment;
|
||||
import com.example.modulevoice.fragment.VoiceFragment;
|
||||
import com.permissionx.guolindev.PermissionX;
|
||||
import com.permissionx.guolindev.callback.ExplainReasonCallback;
|
||||
import com.permissionx.guolindev.callback.ForwardToSettingsCallback;
|
||||
import com.permissionx.guolindev.callback.RequestCallback;
|
||||
import com.permissionx.guolindev.request.ExplainScope;
|
||||
import com.permissionx.guolindev.request.ForwardScope;
|
||||
import com.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.contacts.HomeContacts;
|
||||
import com.xscm.modulemain.databinding.ActivityMainBinding;
|
||||
@@ -553,8 +560,49 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
|
||||
MvpPre.getMyInfo(SpUtil.getUserId() + "");//获取首充是否需要展示
|
||||
|
||||
// mBinding.ivShouchl.setVisibility(View.VISIBLE);
|
||||
LogUtils.e("@@@1","开始定位", "描述:", "");
|
||||
initLocation();
|
||||
|
||||
|
||||
// 请求GPS相关权限(精确位置+可选的后台权限)
|
||||
requestGpsPermissions();
|
||||
|
||||
}
|
||||
|
||||
private void requestGpsPermissions() {
|
||||
PermissionX.init(this)
|
||||
// 请求精确位置权限(包含GPS定位能力)
|
||||
.permissions(
|
||||
Manifest.permission.ACCESS_FINE_LOCATION,
|
||||
// 如需后台使用GPS,添加此权限(Android 10+)
|
||||
Manifest.permission.ACCESS_BACKGROUND_LOCATION
|
||||
).explainReasonBeforeRequest()
|
||||
.onExplainRequestReason(new ExplainReasonCallback() {
|
||||
@Override
|
||||
public void onExplainReason(ExplainScope scope, List<String> deniedList) {
|
||||
String message = "需要GPS权限以获取您的精确位置,用于导航/定位功能";
|
||||
// 若包含后台权限,补充说明
|
||||
|
||||
scope.showRequestReasonDialog(deniedList, message, "确定", "取消");
|
||||
}
|
||||
})
|
||||
// 权限被永久拒绝时,引导至设置页面
|
||||
.onForwardToSettings(new ForwardToSettingsCallback() {
|
||||
@Override
|
||||
public void onForwardToSettings(ForwardScope scope, List<String> deniedList) {
|
||||
scope.showForwardToSettingsDialog(deniedList, "GPS权限被拒绝,无法使用定位功能,请去设置开启", "去设置", "取消");
|
||||
}
|
||||
})
|
||||
// 权限请求结果回调
|
||||
.request(new RequestCallback() {
|
||||
@Override
|
||||
public void onResult(boolean allGranted, List<String> grantedList, List<String> deniedList) {
|
||||
if (allGranted) {
|
||||
// Toast.makeText(MainActivity.this, "GPS权限已授予,可开始定位", Toast.LENGTH_SHORT).show();
|
||||
initLocation(); // 启动GPS定位逻辑
|
||||
} else {
|
||||
Toast.makeText(MainActivity.this, "GPS权限被拒绝,无法使用定位功能", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@@ -629,18 +677,19 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
|
||||
|
||||
|
||||
private String city1;
|
||||
|
||||
@Override
|
||||
public void onLocationReceived(double latitude, double longitude, String city) {
|
||||
LogUtils.e("当前位置:" + city);
|
||||
city1 = city;
|
||||
EventBus.getDefault().post(city1);
|
||||
LogUtils.e("@@@1","开始定位", "描述:","当前位置"+city);
|
||||
LogUtils.e("@@@1", "开始定位", "描述:", "当前位置" + city);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(String errorMessage) {
|
||||
|
||||
LogUtils.e("@@@1","开始定位", "描述:","失败");
|
||||
LogUtils.e("@@@1", "开始定位", "描述:", "失败");
|
||||
|
||||
}
|
||||
|
||||
@@ -874,18 +923,9 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
|
||||
private SystemLocationProvider locationProvider;
|
||||
|
||||
private void initLocation() {
|
||||
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||
// 在Activity或Fragment中调用
|
||||
|
||||
|
||||
// 请求定位权限
|
||||
ActivityCompat.requestPermissions(
|
||||
(Activity) this,
|
||||
new String[]{
|
||||
android.Manifest.permission.ACCESS_FINE_LOCATION,
|
||||
Manifest.permission.ACCESS_COARSE_LOCATION
|
||||
},
|
||||
1001 // 自定义常量,比如 1001
|
||||
);
|
||||
}
|
||||
locationProvider = new SystemLocationProvider();
|
||||
|
||||
// 请求一次性的位置信息
|
||||
|
||||
Reference in New Issue
Block a user