Dieses zufällig passieren, vor allem in Genymotion Emulator denke ich das Problem, dass Zeile ist:PlaceDetectionApi zeigt Binder Call (Android - Nullpointer) fehlgeschlagen
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
Below i den gesamten Code lassen:
**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 Anruf fehlgeschlagen
java.lang.NullPointerException: Versuch, virtu aufrufen al-Methode 'Leerer com.google.android.gms.location.places.zzo $ zzf.zzb (com.google.android.gms.common.api.Result)' auf einer Null-Objekt Referenz
bei com .google.android.gms.location.places.zzo.zzbs (Unknown Source)
bei com.google.android.gms.location.places.internal.zzl $ zza.onTransact (Unbekannt Quelle)
bei android.os.Binder.execTransact (Binder.java:565)
Mögliche Duplikate von [Was ist eine NullPointerException und wie behebe ich sie?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -es) – BlackHatSamurai