2015-04-20 5 views
8

Ich kann den Platzwähler in meiner App nicht verwenden. Die API funktionierte dann nur einen Tag ohne Erklärung. Der Picker erscheint für eine sehr kurze Zeit und schließt dann ohne Ausnahme und nichts in den Protokollen. Die Funktion onActivityResult wird mit requestCode = 1, resultCode = 2 (Fehlercode) und ohne Daten aufgerufen. Der Beispielcode von Google macht das Gleiche. Ich habe alles versucht, damit das funktioniert. Irgendjemand Ähnliches erfahren? Hilfe bitte.Google Places-API für Android-Platzwähler funktioniert nicht

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.easy.parcelapp." 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="16" 
     android:targetSdkVersion="22" /> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.RECORD_VIDEO" /> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 

    <application 
     android:name=".EasiParcelApplication" 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyDEcV-My-Actual-API-Key-goes-here" /> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Holo.Light.NoActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".RegistrationActivity" 
      android:label="@string/title_activity_register" 
      android:parentActivityName=".MainActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.easiparcel.MainActivity" /> 
     </activity> 
     <activity 
      android:name=".JobListingActivity" 
      android:label="@string/title_activity_listing" > 
     </activity> 
     <activity 
      android:name=".NewJobActivity" 
      android:label="@string/title_activity_new_job" 
      android:parentActivityName=".JobListingActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.easiparcel.JobListingActivity" /> 
     </activity> 
     <activity 
      android:name=".NewJobConfirmation" 
      android:label="@string/title_activity_new_job_confirmation" 
      android:parentActivityName=".NewJobActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.easiparcel.NewJobActivity" /> 
     </activity> 
     <activity 
      android:name=".JobDetails" 
      android:label="@string/title_activity_job_details" 
      android:parentActivityName=".JobListingActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.easiparcel.JobListingActivity" /> 
     </activity> 
    </application> 

</manifest> 

Activity.java

public void HandleSenderAddressPickerClicked(View view) 
{ 
    int PLACE_PICKER_REQUEST = 1; 
    LoadPlacePicker(PLACE_PICKER_REQUEST); 

} 

public void HandleRecieverAddressPickerClicked(View view) 
{ 
    int PLACE_PICKER_REQUEST = 2; 
    LoadPlacePicker(PLACE_PICKER_REQUEST); 

} 

private void LoadPlacePicker(int PlacePickerRequest) 
{ 
    try { 

     PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder(); 
     Intent intent = intentBuilder.build(NewJobActivity.this); 
     // Start the Intent by requesting a result, identified by a request code. 
     startActivityForResult(intent, PlacePickerRequest); 


    } catch (GooglePlayServicesRepairableException e) { 
     GooglePlayServicesUtil 
       .getErrorDialog(e.getConnectionStatusCode(), NewJobActivity.this, 0); 
    } catch (GooglePlayServicesNotAvailableException e) { 
     Toast.makeText(NewJobActivity.this, "Google Play Services is not available.", 
       Toast.LENGTH_LONG) 
       .show(); 
    } 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1) { 
     if (resultCode == RESULT_OK) { 
      Place place = PlacePicker.getPlace(data, this); 
      String toastMsg = String.format("Sender Place: %s", place.getName()); 
      Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 
     } 
    } 

    //Reciever 
    if (requestCode == 2) { 
     if (resultCode == RESULT_OK) { 
      Place place = PlacePicker.getPlace(data, this); 
      String toastMsg = String.format("Receiver Place: %s", place.getName()); 
      Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

Antwort

22

dachte ich die Antwort auf meine eigene Frage aus.

Wenn jemand anderes das gleiche Problem trifft, stellen Sie sicher, dass Sie „Places API für Android“ und nicht nur „Places API“ im Developer Console ermöglichen. "Places API für Android" wird unter "APIs & Auth/APIs" nicht angezeigt, da es (noch) keine populäre API ist. Sie müssen mit dem API-Suchfeld danach suchen.

+0

Das löste mein Problem auch. Aber das Seltsame ist, dass ich diese API aktiviert hatte und vor 10 Tagen funktionierte der Platzwähler. Aber als es plötzlich aufgehört hat zu arbeiten, und heute, als ich in meine Entwickler-Konsole trat, war die API deaktiviert, aber ich habe sie nicht deaktiviert ... Es ist seltsam .. – Andranik

+0

hatte es die gleiche Quote vor? 1000 Anfragen/Tag, ich kann mich nicht erinnern – Minas

+1

Perfekt funktioniert –

9

statt dessen:

<meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="your_key"/> 

hinzufügen:

<meta-data    
    android:name="com.google.android.geo.API_KEY" 
    android:value="your_key" /> 

Es funktionierte für mich !!!

+0

Immer noch nicht funktioniert. –

0

Überprüfen Sie Ihre Build-Variante. Wenn Sie von release zu debug zurückgeschaltet haben, erhalten Sie normalerweise auch den Ergebniscode 2.

Zurück zu release hat den Trick für mich getan.

Verwandte Themen