2

サムスンギャラクシーS3で自分の位置を取得しようとすると、アプリがクラッシュします。それは私がテストした他の3つの電話で完璧に動作します。サムスンギャラクシーS3にリモートテスターがいるだけなので、エラーメッセージが表示されません。これが私のコードです:

    Location finalLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    locationManager.removeUpdates(locationListenerGps);
    locationManager.removeUpdates(locationListenerNetwork);

    Location net_loc=null, gps_loc=null;
    if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
        gps_loc=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
        net_loc=locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

    //if there are both values use the latest one
    if(gps_loc!=null && net_loc!=null){
        if(gps_loc.getTime()>net_loc.getTime())
            finalLocation = gps_loc;
        else
            finalLocation = net_loc;
    }

    if(gps_loc!=null){
        finalLocation = gps_loc;

    }
    if(net_loc!=null){
        finalLocation = net_loc;

    }
4

2 に答える 2

1

これは4.0.4リリースの「機能」だと思います。確認してください(getLastKnownLocationはSamsung Galaxy S3 4.0.4では機能しません)

同じ問題が発生しましたが、4.1にアップグレードすると問題は解決しました。

おそらく両方がnullの場合をキャッチする必要がありますが、PASSIVE_PROVIDERが機能することがわかりました。

   if ( gps_loc == null && net_loc == null ) { // only S3 gets this....
      finalLocation=  locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
   }
   if ( finalLocation == null ) panic....
于 2012-12-30T07:46:30.477 に答える
0

logcat なしで正確な問題を特定することは困難ですが、場合によっては getLastKnownLocation が null を返すことがあります (可能性は低いですが、可能性はあります)。この場合、クラッシュが発生することは容易にわかります。getLastKnownLocation が値を返したことを確認するコードを追加してみてください。そうでない場合は、ダミーの値を使用するか、アクションを「一時停止」して自分で場所を取得してください。

http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String )

于 2012-12-30T08:02:52.687 に答える