Android 6.0 api 23 - 获得许可后,我的位置为空[重复]

Posted

技术标签:

【中文标题】Android 6.0 api 23 - 获得许可后,我的位置为空[重复]【英文标题】:Android 6.0 api 23 - After obtaining permission , my position is null [duplicate] 【发布时间】:2016-12-12 21:21:46 【问题描述】:

我在 android 6.0 中遇到了另一个位置问题。

我阅读了Android 6.0权限的官方指南,现在可以工作了,但是我的位置是空的,代码似乎被阻塞了!

这是 OnCreate 方法:

if ( Build.VERSION.SDK_INT >= 23 )  //CONTROLLO PER ANDROID 6.0 O SUPERIORE
        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) 

            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.ACCESS_FINE_LOCATION)) 
             else 
                ActivityCompat.requestPermissions(this, new String[]Manifest.permission.ACCESS_FINE_LOCATION,
                        MY_PERMISSIONS_ACCESS_FINE_LOCATION);
            
        
    else
        Log.d("ANDROID","ANDROID SENZA FRONZOLI");
        //dA QUI IN POI MAIN STANDARD
    

这是检查权限类:

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) 
    switch (requestCode) 
        case MY_PERMISSIONS_ACCESS_FINE_LOCATION: 
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) 


                Log.d("PERMESSI-fine", "PERMESSI OK");

                LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

                if ( ContextCompat.checkSelfPermission( this, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED ) 

                    ActivityCompat.requestPermissions( this, new String[]   android.Manifest.permission.ACCESS_FINE_LOCATION  ,
                            MY_PERMISSIONS_ACCESS_FINE_LOCATION );
                

                    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

                    if (location != null) 
                        double longitude = location.getLongitude();
                        double latitude = location.getLatitude();

                        Log.d("GPS-PROVIDER", String.valueOf(longitude));
                        Log.d("GPS-PROVIDER", String.valueOf(latitude));

                        // Toast.makeText(MainActivity.this, "GPS OK", Toast.LENGTH_SHORT).show();
                    else
                        Log.d("GPS","NIENTE ZONA VUOTA");
                        Log.d("GPS", String.valueOf(location));
                    



             else 


                Log.d("PERMESSI-fine","PERMESSE NO");
            
            return;
        

        // other 'case' lines to check for other
        // permissions this app might request
    

代码不报错,简单什么都没有!空对象。现在我正在使用 android 6.0 模拟器。我没有这个操作系统版本的真机。

请帮帮我。

【问题讨论】:

【参考方案1】:

模拟器没有 gps,因此位置提供者根本不会获得任何位置或任何最后已知的位置。您需要添加 gps 数据。 follow the link 或 android.developer source

【讨论】:

插入坐标我用了模拟器的扩展控制,geo fix不起作用,他给我KO 确保您在模拟器中使用 google api

以上是关于Android 6.0 api 23 - 获得许可后,我的位置为空[重复]的主要内容,如果未能解决你的问题,请参考以下文章

FusedLocationApi.getLastLocation 总是返回 null(android 6.0,api 23)

AndroidHttpClient 和 HttpGet API 在 Android 6.0 Marshmallow (API 23) 中已弃用

如何在 Android 6.0 (API 23) 中继续使用浏览器书签更改

用于 MediaRecorder Android 6.0 (API 23) 的“Seekable”文件描述符

在 Android 6.0 Marshmallow (API 23) 上不推荐使用 getColor(int id)

如何在android 10或更高版本中获得“总是”位置的许可? (高于 API 29)?