0

ユーザーの場所を取得しようとすると、アプリがクラッシュすることがあります。残念ながら、コンピューターに接続したときにエラーが発生したことがないため、エラーは発生しません...

これを使用してユーザーの場所を取得しています:

 LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        double longitude = location.getLongitude();
        double latitude = location.getLatitude();

私は時々これがnullかもしれないと考えていますか?もしそうなら、どうすればこの強制終了を修正できますか?

4

4 に答える 4

2

場所を取得しているときに強制的に閉じることはありません..経度と緯度を割り当てるときに強制的に閉じられます..if(location!=null)値を割り当てる前に

    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
            Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

//location might be null so
if(location != null)
{
        double longitude = location.getLongitude();
        double latitude = location.getLatitude();
}
于 2013-11-08T14:53:12.977 に答える
0

Exception の可能性がある場合は、常に Try & catch ブロックを使用します。location が null を返すと、NullPointerException が発生します。

try {

        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        double longitude = location.getLongitude();
        double latitude = location.getLatitude();
    } catch (Exception e) {

    }
于 2013-11-08T15:07:47.793 に答える
0

独自の GPS を展開しないことをお勧めします.. Fused Location Provider を使用します。

ここに例があります: http://www.kpbird.com/2013/06/fused-location-provider-example.html?m=1

于 2013-11-08T15:25:54.823 に答える
0

location が null にならないという保証はありません (最後の既知の場所がない可能性があります)。

location.getLongitude()

続行する前に、場所 != null を確認してください。

于 2013-11-08T14:52:57.143 に答える