Android獲取用戶location值為NULL的解決辦法的代碼

下面的代碼內(nèi)容是關(guān)于Android獲取用戶location值為NULL的解決辦法的代碼,應(yīng)該是對碼農(nóng)有一些用處。

package com.jeedroid.tools;?

?

import java.io.IOException;?

import java.util.List;?

import java.util.Locale;?

?

import android.content.Context;?

import android.location.Address;?

import android.location.Criteria;?

import android.location.Geocoder;?

import android.location.Location;?

import android.location.LocationListener;?

import android.location.LocationManager;?

import android.os.Bundle;?

import android.provider.Settings;?

import android.util.Log;?

?

public class LocationTools?

{?

? ? private Location location;?

public static LocationManager getLocationManager(Context context)?

{?

? ? return (LocationManager) context.getSystemService(context.LOCATION_SERVICE);?

}?

public String getAddress(Context context)?

{?

? ? LocationManager locationManager = this.getLocationManager(context);?

? ? if(!locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))?

? ? {?

? ? android.provider.Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, false);?

? ? }?

? ? return doWork(context);?

}?

?

private String doWork(Context context)?

{?

? ? String addres="";?

? ? LocationManager locationManager = this.getLocationManager(context);?

? ? Criteria criteria = new Criteria();?

? ? criteria.setAccuracy(Criteria.ACCURACY_FINE);? ?

? ? criteria.setAltitudeRequired(false);? ?

? ? criteria.setBearingRequired(false);? ?

? ? criteria.setCostAllowed(false);? ?

? ? criteria.setPowerRequirement(Criteria.POWER_LOW);? ?

? ? String provider =locationManager.getBestProvider(criteria, true);?

? ? Log.i("provider>>>>>>", provider);?

? ? while(location==null)?

? ? {?

? ? location =locationManager.getLastKnownLocation(provider);?

? ? }?

? ? LocationListener locationListener = new LocationListener()?

? ? {?

?

? ? ? ? @Override?

? ? ? ? public void onLocationChanged(Location location)?

? ? ? ? {?

? ? ? ? ? ? LocationTools.this.location=location;?

? ? ? ? }?

?

? ? ? ? @Override?

? ? ? ? public void onProviderDisabled(String provider)?

? ? ? ? {?

? ? ? ? ? ? ?

? ? ? ? }?

?

? ? ? ? @Override?

? ? ? ? public void onProviderEnabled(String provider)?

? ? ? ? {?

? ? ? ? ? ? ?

? ? ? ? }?

?

? ? ? ? @Override?

? ? ? ? public void onStatusChanged(String provider, int status, Bundle extras)?

? ? ? ? {?

? ? ? ? ? ? ?

? ? ? ? }?

? ? ? ? ?

? ? };?

? ? locationManager.requestLocationUpdates(provider, 1000, 10, locationListener);?

? ?

? ? Geocoder geo = new Geocoder(context,Locale.getDefault());?

? ? try?

? ? {?

? ? ? ? List<Address> address=geo.getFromLocation(location.getLatitude(), location.getLongitude(), 1);?

? ? ? ? if(address.size()>0)?

? ? ? ? {?

? ? ? ? ? ? addres=address.get(0).getAddressLine(0);?

? ? ? ? }?

? ? } catch (IOException e)?

? ? {?

? ? ? ? e.printStackTrace();?

? ? }?

? ? return addres;?

}?

}?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ?

? ? ? ? ? ?

? ? ? ? ? ?

? ? ? ? ? ? ? ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容