2016-07-06 13 views
3

Unten ist mein Code, um neaby Orte an der aktuellen Position zu bekommen. Der Code funktioniert manchmal und manchmal nicht ohne etwas zu ändern. Warum passiert es so? Ich habe die api Schlüssel gültig ist geprüft, Statuscode „ERROR“, sagt der Flugbetrieb ohne detailliertere Informationen über https://developers.google.com/android/reference/com/google/android/gms/common/api/CommonStatusCodes.html#constants Vielen Dank fehlgeschlagen Im Folgenden finden Sie Aktivität:Google Place Api gibt Status {statusCode = FEHLER, Auflösung = null}

public class PlacesAPIActivity extends AppCompatActivity implements 
     OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks { 
    private static final String LOG_TAG = "PPPPPPPPPPPPPPPPP"; 
    private static final int GOOGLE_API_CLIENT_ID =0; 
    private GoogleApiClient mGoogleApiClient; 
    private static final int PERMISSION_REQUEST_CODE = 100; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_places_api); 
     Log.d("resuktfvvvfdfd", "onCreate: "); 
     buildGoogleApiClient();} 

    private synchronized void buildGoogleApiClient() 
    { Button currentButton = (Button) findViewById(R.id.currentButton); 
     mGoogleApiClient = new GoogleApiClient.Builder(PlacesAPIActivity.this) 
       .addApi(Places.PLACE_DETECTION_API) 
       .addApi(Places.GEO_DATA_API) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) 
       .build(); 
     mGoogleApiClient.connect(); 
     Log.d("connected", String.valueOf(mGoogleApiClient.isConnected())); 
     currentButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mGoogleApiClient.isConnected()) { 
        Log.d("connected1", String.valueOf(mGoogleApiClient.isConnected())); 
        if (ContextCompat.checkSelfPermission(PlacesAPIActivity.this, 
          Manifest.permission.ACCESS_FINE_LOCATION) 
          != PackageManager.PERMISSION_GRANTED) { 
         ActivityCompat.requestPermissions(PlacesAPIActivity.this, 
           new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
           PERMISSION_REQUEST_CODE); 
        } else { 
         callPlaceDetectionApi(); 
        } 

       } 
      } 
     }); 
    } 



    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     Log.e(LOG_TAG, "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, 
              String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case PERMISSION_REQUEST_CODE: 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        callPlaceDetectionApi(); 
       } 
       break; 
     } 
    } 

    private void callPlaceDetectionApi() throws SecurityException { 

     Log.d("mvkvkmvkmvkm", "callPlaceDetectionApi: "); 
     PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi 
       .getCurrentPlace(mGoogleApiClient, null); 
     Log.d("result", result.toString()); 
     result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() { 
      @Override 
      public void onResult(PlaceLikelihoodBuffer likelyPlaces) { 
       System.out.println("inside callback..."); 
       Status status = likelyPlaces.getStatus(); 
       System.out.println("Status.tostring"+status.toString()); 
       System.out.println(status.isSuccess()); 
       System.out.println(status.getStatusCode()); 
       System.out.println(status.getStatusMessage()); 
       System.out.println(status.getStatus()); 
       for (PlaceLikelihood placeLikelihood : likelyPlaces) { 
        Log.i(LOG_TAG, String.format("Place '%s' with " + 
            "likelihood: %g", 
          placeLikelihood.getPlace().getName(), 
          placeLikelihood.getLikelihood())); 
       } 
       likelyPlaces.release(); 
      } 
     }); 
    } 




    @Override 
    public void onStop() { 
     super.onStop(); 


     mGoogleApiClient.disconnect(); 
    } 

    @Override 
    public void onConnected(@Nullable Bundle bundle) { 

    } 

    @Override 
    public void onConnectionSuspended(int i) { 

    } 
} 

Android-Manifest-Datei

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.******"> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".PlacesAPIActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version"/> 

     <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="A***************************o"/> 
    </application> 
</manifest> 

LOG Bildschirm

07-06 15:56:32.499 10925-10925/com.example.utkarsh.nearby D/connected1: true 
07-06 15:56:32.500 10925-10925/com.example.utkarsh.nearby D/mvkvkmvkmvkm: callPlaceDetectionApi: 
07-06 15:56:32.554 10925-10925/com.example.utkarsh.nearby D/result: [email protected] 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: inside callback... 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: Status.tostringStatus{statusCode=ERROR, resolution=null} 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: false 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: 13 
07-06 15:56:42.611 10925-10925/com.example.utkarsh.nearby I/System.out: ERROR 
07-06 15:56:42.611 10925-10925/com.example.utkarsh.nearby I/System.out: Status{statusCode=ERROR, resolution=null} 
+2

Können Sie dieses Problem beheben? –

+0

Haben Sie das gleiche Problem, haben Sie eine Lösung gefunden? – mehmetsen80

Antwort

1

Nachdem ich viel von diesem Fehlercode hatte, löste ich es, indem ich meinen GPS-Standort in meinem Emulator sendete. Im Android Studio AVD - Android Emulator habe ich bei laufendem Programm in "More"> "Location" geklickt> Meine Breiten- und Längengrade eingestellt und auf "Send" geklickt. Sofort wurde die nächste Anfrage an getCurrentLocation() erfolgreich ausgeführt. Sie können Ihren Standort an den Emulator senden, bevor Sie Ihre App ausführen. Es wird auch funktionieren.

0

In meinem Fall Google Places für Android ist nicht richtig arbeiten, ohne eine Google Map Initialisierung wie in diesem Beispiel beschrieben https://developers.google.com/places/android-api/current-places-tutorial

/** 
* Builds the map when the Google Play services client is successfully connected. 
*/ 
@Override 
public void onConnected(Bundle connectionHint) { 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 
Verwandte Themen