【问题标题】:isProviderEnabled() never getting called androidisProviderEnabled() 永远不会被调用 android
【发布时间】:2013-06-18 17:16:49
【问题描述】:

我正在编写获取手机当前位置(纬度和经度)的代码。无论电话是否提供网络位置服务,我都会显示祝酒词。这个吐司永远不会出现。另一个问题是,要使用Network_location 获取当前位置,应用程序是否会使用手机的gprs/internet

我已经在主活动中创建了这个类的实例,然后在另一个扩展 broadcast reciever 的类中使用这个类的纬度和经度变量获取数据。

public class GpsClass extends Activity{

public static String Latitude="";
public static String Longitude=""; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

    LocationListener listener = new LocationListener() { // anonymous class

        @Override
        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderEnabled(String arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderDisabled(String arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onLocationChanged(Location currentLocation) {

            double lat= currentLocation.getLatitude();

            Latitude = Double.toString(lat);

            double longt= currentLocation.getLongitude();

            Longitude = Double.toString(longt);

        }
    };


    manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);

    if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
    {
        Toast.makeText(getApplicationContext(), "Network enabled", 0).show();
    }
    else
        Toast.makeText(getApplicationContext(), "Network not enabled", 0).show();

 }

}

我做错了什么吗?

问候

【问题讨论】:

  • 尝试添加 Log 而不是 Toast,并检查它是否出现。

标签: java android networking location


【解决方案1】:

我认为问题在于您传递 0 持续时间,即 makeText() 方法的最后一个参数。 尝试传递Toast.LENGTH_SHORTToast.LENGTH_LONG

if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
{
    Toast.makeText(getApplicationContext(), "Network enabled", Toast.LENGTH_LONG).show();
}
else
    Toast.makeText(getApplicationContext(), "Network not enabled", Toast.LENGTH_LONG).show();

【讨论】:

  • 没有。它与此无关。我的应用程序中的所有其他吐司也有 0 作为持续时间,它们工作正常!
  • 好的,我在文档中看到,发现值 0 用于 Toast.LENGTH_SHORT,值 1 用于 Toast.LENGTH_LONG。因此,绝对将 0 作为第三个参数传递不是问题。
【解决方案2】:

This 可以帮助您获得第一个问题的答案。

第二个问题的答案是 - 不,该应用不会使用手机的 gprs/互联网通过网络提供商获取位置。

【讨论】:

    【解决方案3】:

    问题是持续时间设置为 0。 这是一个示例:

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationListener = new LocationListener() {
    
            @Override
            public void onLocationChanged(Location location) {
                currentLocation = new GeoPoint(location.getLatitude(), location.getLongitude());
                // Set Toast Here To Diplay location    
            }
    
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
    
            @Override
            public void onProviderEnabled(String provider) {
            }
    
            @Override
            public void onProviderDisabled(String provider) {
            }
    
        };
        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
           //10000 means request update every 10 sec
           //10 tell listener that if location change more than 10m then run locationChanged method
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 10, locationListener);
        } else {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 10, locationListener);
        }
    

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 2017-01-20
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多