Android 试图通过cell tower获取位置,但仍返回null

Android 试图通过cell tower获取位置,但仍返回null,android,gps,Android,Gps,我试图做的是从用户那里获取位置。首先,它尝试通过GPS获取位置,并检查位置是否可用。若并没有,那个么它会试图通过网络塔。当GPS打开时,它工作正常。但当我关闭GPS时,它无法使用网络提供商获取位置 manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); provider = manager.getBestProvider(new Criteria(), false); Log.i("ITE

我试图做的是从用户那里获取位置。首先,它尝试通过GPS获取位置,并检查位置是否可用。若并没有,那个么它会试图通过网络塔。当GPS打开时,它工作正常。但当我关闭GPS时,它无法使用网络提供商获取位置

 manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    provider = manager.getBestProvider(new Criteria(), false);

    Log.i("ITEMSET best", provider);


    manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        //    ActivityCompat#requestPermissions
        // here to request the missing permissions, and then overriding
        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
        //                                          int[] grantResults)
        // to handle the case where the user grants the permission. See the documentation
        // for ActivityCompat#requestPermissions for more details.
        return;
    }

    Log.i("ITEMSET provider", provider);

    location = manager.getLastKnownLocation(provider);
    Log.i("ITEMSET netLoc", location + "");
    if(location==null) {
        provider = LocationManager.NETWORK_PROVIDER;
        location = manager.getLastKnownLocation(provider);
        Log.i("ITEMSET netLoc", location + "qqq");
    }



    Log.i("ITEMSET current", provider);
    Log.i("ITEMSET location", location  + "");


位置最初为空,因为GPS未打开。但随后将提供商更改为网络提供商。但位置仍然为空

检查网络是否已启用

 isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
然后:


您应该使用
GoogleAppClient
获取您的位置。请访问

您是否已授予精细定位权限?是的,我已授予精细定位和粗略定位权限。可能您尚未请求位置更新,这就是为什么它会发出isNetworkEnabled{locationManager.requestLocationUpdates(locationManager.NETWORK_PROVIDER,5000100,this);Log.d(“网络”、“网络”);if(locationManager!=null){location=locationManager.getLastKnownLocation(locationManager.Network_提供程序);if(location!=null){latitude=location.getLatitude();longitude=location.getLongitude()}我在onresume块中请求了locationupdate就是这样。似乎提供程序未启用
     if (isNetworkEnabled) {
   locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000,10, this);
                Log.d("Network", "Network");
                if (locationManager != null) {
                    location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    if (location != null) {

                        latitude = location.getLatitude();
                        longitude = location.getLongitude();


                    }
                }