8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在最新的 Android 15 中获取位置的正确方法

Craftbeergal 2月前

60 0

我在 Android 应用中无法准确检索用户位置,尤其是在较新的 Android 版本中。我根据 Stack Overflow 上的答案实施了一个解决方案,但是...

我在 Android 应用中无法准确检索用户位置,尤其是在较新的 Android 版本中。我根据 Stack Overflow 答案 ,但效果不如预期。

我不确定问题的根本原因。是由于最近的 Android 版本中位置权限处理方式的变更、我的代码中的权限实现不正确,还是 Stack Overflow 解决方案本身存在潜在问题?

您能否指导我解决此问题应采取的具体步骤,包括检查与权限相关的问题、验证位置服务和调试我的代码?

我特别感兴趣的是了解如何在较新的 Android 版本上正确处理位置权限以及任何可能解决兼容性问题的方法。

帖子版权声明 1、本帖标题:在最新的 Android 15 中获取位置的正确方法
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Craftbeergal在本站《android》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 要在最新的 Android 15 中获取位置,您应该使用 Fused Location Provider API,它是 Google Play 服务的一部分。此 API 提供了一种简单有效的方法来获取设备的位置,具有高精度和低功耗。 步骤:

    1. 添加依赖项:将必要的依赖项添加到您的 build.gradle 文件:
    dependencies {
        implementation 'com.google.android.gms:play-services-location:21.0.1'
    }
    
    1. 请求权限:更新您的 AndroidManifest.xml 以包含必要的位置权限:
    XML
    
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    
    1. 在运行时检查权限:确保在运行时检查并请求位置权限:
    Java
    
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
        ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, LOCATION_REQUEST_CODE);
        return;
    }
    
    1. 初始化FusedLocationProviderClient:在您的活动中创建FusedLocationProviderClient的实例:
    Java
    
    private FusedLocationProviderClient fusedLocationClient;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    }
    
    1. 获取最后已知位置:使用 getLastLocation 方法获取最后已知位置:
    Java
    
    fusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                // Got last known location. In some rare situations, this can be null.
                if (location != null) {
                    double latitude = location.getLatitude();
                    double longitude = location.getLongitude();
                    // Use the location data
                }
            }
        });
    
返回
作者最近主题: