-4

私のアプリでGoogleマップを実装していて、MapsActivityで以下のエラーが発生してアプリがクラッシュしました。java.lang.NumberFormatException:無効なint: "android.permission.ACCESS_COARSE_LOCATION"

OnMapReady()メソッドでエラーが発生します。 MapReadyでは、ユーザーがアプリ内からロケーションサービスをオンにするように表示するdisplaySettingsRequestを呼び出しました。あなたがしようとしている

public class MapsActivity extends BaseActivity implements OnMapReadyCallback, ConnectionCallbacks, OnConnectionFailedListener {  
private void displayLocationSettingsRequest(Context context) { 
    GoogleApiClient googleApiClient = new GoogleApiClient.Builder(context) 

    PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build()); 
    result.setResultCallback(result1 -> { 
     final Status status = result1.getStatus(); 
     switch (status.getStatusCode()) { 
      case LocationSettingsStatusCodes.SUCCESS: 
       Log.i(TAG, "All location settings are satisfied."); 
       break; 
      case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
       Log.i(TAG, "Location settings are not satisfied. Show the user a dialog to upgrade location settings "); 

       try { 
        // Show the dialog by calling startResolutionForResult(), and check the result 
        // in onActivityResult(). 
        status.startResolutionForResult(MapsActivity.this, HawkConstants.REQUEST_CODE); 
       } catch (IntentSender.SendIntentException e) { 
        Log.i(TAG, "PendingIntent unable to execute request."); 
       } 
       break; 
      case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: 
       Log.i(TAG, "Location settings are inadequate, and cannot be fixed here. Dialog not created."); 
       break; 
     } 
    }); 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    displayLocationSettingsRequest(App.getContext()); 
    mMap = googleMap; 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {    
     return; 
    } 
    mMap.setMyLocationEnabled(true); 

} 

@Override 
public void onConnected(@Nullable Bundle bundle) { 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {   
     ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, 
       Integer.parseInt(Manifest.permission.ACCESS_COARSE_LOCATION)); 
     return; 
    } 
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
      mGoogleApiClient); 
} 
+0

コードを表示します。それについて 'MapsActivity' – AJay

+0

こんにちは@AJayコードで私の質問を編集しました。見てください – Durga

+0

これは、マニフェストのためのインポートチェックのインポートで問題です。 – AJay

答えて

1

マップのアクティビティ

Integer.parseInt(Manifest.permission.ACCESS_COARSE_LOCATION)); 

しかしManifest.permission.ACCESS_COARSE_LOCATIONは十進法の数値のString表現ではありません。それはNumberFormatExceptionを引き起こします。

StackTraceによると、Manifest.permission.ACCESS_COARSE_LOCATION“android.permission.ACCESS_COARSE_LOCATION”です。 String"10""1234123""-11121"のようにしか解析できませんが、Javaは数字に"java cute string"を解析しません。

NFEhereについて詳しく読むことができます。

+0

助けてくれてありがとう、そしてStackTraceの例外はあなたがはっきりと説明したことを言っていますが、根本的な原因は私が誤って許可モデルを正しく処理しなかったことです。ユーザーが場所のアクセス許可を拒否した後、私は処理することができませんでした。 – Durga

関連する問題