在获取我的位置信息时出现空异常错误
我在manifist中放了一个使用许可
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
有谁能帮我弄清楚我在android开发中是新手吗?提前致谢 。
代码:
package com.example.locationsample;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
Button getloc;//`Location Button`
TextView lati;
TextView longi;
TextView address;
LocationManager location_manager;
String getLatitude;
String getLongitude;
double x;
double y;
Geocoder geocoder;
List<Address> addresses;
Location loc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getloc = (Button) findViewById(R.id.getlocation);
lati = (TextView) findViewById(R.id.latitude);
longi = (TextView) findViewById(R.id.longitude);
address = (TextView) findViewById(R.id.address);
location_manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
getloc.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
LocationListener listner = new MyLocationListner();
location_manager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, listner);
}
});
}
public class MyLocationListner implements LocationListener{
private Address location;
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressWarnings("static-access")
@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
getLatitude = "" + loc.getLatitude();
getLongitude = "" + loc.getLongitude();
lati.setText(getLatitude);
longi.setText(getLongitude);
x = location.getLatitude();
y = location.getLongitude();
try {
geocoder = new Geocoder(MainActivity.this, Locale.ENGLISH);
addresses = geocoder.getFromLocation(x, y, 1);
StringBuilder str = new StringBuilder();
if (geocoder.isPresent()) {
Toast.makeText(getApplicationContext(),
"geocoder present", Toast.LENGTH_SHORT).show();
Address returnAddress = addresses.get(0);
String localityString = returnAddress.getLocality();
String city = returnAddress.getCountryName();
String region_code = returnAddress.getCountryCode();
String zipcode = returnAddress.getPostalCode();
str.append(localityString + "");
str.append(city + "" + region_code + "");
str.append(zipcode + "");
address.setText(str);
Toast.makeText(getApplicationContext(), str,
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(),
"geocoder not present", Toast.LENGTH_SHORT).show();
}
// } else {
// Toast.makeText(getApplicationContext(),
// "address not available", Toast.LENGTH_SHORT).show();
// }
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("tag", e.getMessage());
}
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}
}
最佳答案
您正在使用loc且未对其进行任何操作,它为null
在你里面
@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
getLatitude = "" + loc.getLatitude();
getLongitude = "" + loc.getLongitude();
///etc..........
}
您应该使用arg0
getLatitude = "" + arg0.getLatitude();
getLongitude = "" + arg0.getLongitude();
编辑:它实际上看起来与
x = location.getLatitude();
y = location.getLongitude();
关于android - 获取我的位置无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22124295/