簡體   English   中英

isProviderEnabled()永遠不會被稱為android

[英]isProviderEnabled() never getting called android

我正在編寫代碼以獲取手機的當前位置(緯度和經度)。 無論是否通過電話提供網絡定位服務,我都會顯示祝酒詞。 這個吐司從來沒有出現過。 另一個問題是,要使用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();

 }

}

我做錯了什么嗎?

問候

我認為問題在於持續時間(即makeText()方法的最后一個參數)傳遞了0。 嘗試傳遞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();

可以幫助您獲得第一個問題的答案。

您的第二個問題的答案是-不,該應用程序不會使用手機的gprs /互聯網通過網絡提供商獲取位置。

問題是將持續時間設置為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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM