网络连接已关闭,但位置提供程序是NetworkProvider

ays*_*tl_ 1 gps android locationmanager android-location

我尝试在Android设备上获取用户的位置.程序检查GPS可用性.如果禁用GPSProvider,则会警告用户.如果用户未启用GPS,请对networkProvider进行程序检查.

检查网络提供商的代码,

public boolean askNetworkProvider(){

    if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
        AlertDialog builder = new AlertDialog.Builder(context)
                .setMessage("Enable Network Connection")
                .setTitle("Warning!")
                .setCancelable(true)
                .setPositiveButton("OK", new OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        return;
                    }
                } ).show();
    }

    if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){

         locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000, 0, networkListener);
         mlocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
         Log.i(LocationService.class.getName(),"Network Enable!!");
         return true;

     }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

即使wifi和移动连接被禁用,它也表示networkProvider已启用并输入第二个if语句.但它应该是假的.我该如何解决?

小智 6

您可能在下拉选项中禁用主菜单的Wi-Fi连接,而不是禁用"设置 - 位置服务"下的"使用无线网络".

请记住,Wi-Fi!=使用无线网络.

当你使用

locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
Run Code Online (Sandbox Code Playgroud)

它正在削弱"用户无线网络"选项.

我有同样的问题,在StackOverflow上发布了许多类似的问题,只有一个答案有这个信息.花了我整整一个下午.希望你明白了!:)