-1

This happen randomly, especially in Genymotion Emulator I think the problem is that line:

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);

Below i let all the code:

**MainActivity**

public class MainActivity extends AppCompatActivity implements  GoogleApiClient.OnConnectionFailedListener {

    private GoogleApiClient mGoogleApiClient;
    private static final int GOOGLE_API_CLIENT_ID = 0;
    private static final int PERMISSION_REQUEST_CODE = 100;
    int PLACE_PICKER_REQUEST = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button currentButton = (Button) findViewById(R.id.currentButton);

        mGoogleApiClient = new GoogleApiClient
                .Builder(this)
                .addApi(Places.GEO_DATA_API)
                .addApi(Places.PLACE_DETECTION_API)
                .enableAutoManage(this, this)
                .build();

        currentButton.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                if(mGoogleApiClient.isConnected()){
                    if(ContextCompat.checkSelfPermission(MainActivity.this,
                            Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){
                        ActivityCompat.requestPermissions(MainActivity.this,
                                new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_CODE);
                    }else{
                        callPlaceDetectionApi();
                    }
                }
            }
        });
    }

    @Override
    protected void onStart() {
        mGoogleApiClient.connect();
        super.onStart();
    }

    @Override
    protected void onStop() {
        mGoogleApiClient.disconnect();
        super.onStop();
    }


    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Log.e(String.valueOf(this.getClass()), "Google Places API connection failed with error code: " +
        connectionResult.getErrorCode());

        Toast.makeText(this, "Google Places API connection failed with error code: " + connectionResult.getErrorCode()
        , Toast.LENGTH_LONG).show();
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case PERMISSION_REQUEST_CODE:
                if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    callPlaceDetectionApi();
                } break;
        }
    }

    private void callPlaceDetectionApi() throws SecurityException {
        PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
                .getCurrentPlace(mGoogleApiClient, null);
        result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
            @Override
            public void onResult(@NonNull PlaceLikelihoodBuffer placeLikelihoods) {
                for(PlaceLikelihood placeLikelihood : placeLikelihoods){
                    Log.i(String.valueOf(this.getClass()), String.format("Place '%s' with " +
                                    "likelihood: %g",
                            placeLikelihood.getPlace().getName(),
                            placeLikelihood.getLikelihood()));
                }
                placeLikelihoods.release();
            }
        });
    }
}

Log

Binder call failed

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.location.places.zzo$zzf.zzb(com.google.android.gms.common.api.Result)' on a null object reference

at com.google.android.gms.location.places.zzo.zzbs(Unknown Source)

at com.google.android.gms.location.places.internal.zzl$zza.onTransact(Unknown Source)

at android.os.Binder.execTransact(Binder.java:565)

BlackHatSamurai
  • 21,845
  • 20
  • 84
  • 147
  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – BlackHatSamurai Apr 18 '17 at 23:29

1 Answers1

0

Most likely Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null); is returning null. You should set a breakpoint and step through your code and figure out what is null.

BlackHatSamurai
  • 21,845
  • 20
  • 84
  • 147