2015-04-20 21 views
8

Nie mogę korzystać z selektora miejsca w mojej aplikacji. Interfejs API zadziałał, a następnie zatrzymał się jeden dzień bez żadnego wyjaśnienia. Selektor wyświetla się przez bardzo krótki okres czasu, a następnie po prostu zamyka się bez wyjątku i nic w dziennikach. Funkcja onActivityResult jest wywoływana z requestCode = 1, resultCode = 2 (kod błędu) i bez danych. Przykładowy kod z google robi to samo. Próbowałem wszystkiego, aby to zadziałało. ktokolwiek doświadcza czegoś podobnego? Prosimy o pomoc.Interfejs API Miejsc Google dla Android Place Picker Nie działa

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(); 
     } 
    } 
} 

Odpowiedz

22

zorientowali się odpowiedzi na moje własne pytanie.

Jeśli ktokolwiek napotka ten sam problem, upewnij się włączyć „Places API dla Androida” a nie tylko „Places API” w Developer Console. "Interfejs API witryny dla systemu Android" nie pojawi się w "APIs & Auth/APIs", ponieważ nie jest popularnym API (jeszcze). Będziesz musiał go wyszukać, korzystając z pola wyszukiwania API.

+0

To również rozwiązało mój problem. Dziwne jest jednak to, że mam włączone to API, a 10 dni temu narzędzie do wyboru miejsca działało. Ale nagle przestało działać, a dziś, kiedy wszedłem do mojej konsoli programisty, API zostało wyłączone, ale nie wyłączyłem go ... To dziwne .. – Andranik

+0

miał już ten sam limit? 1000 próśb/dzień, nie pamiętam – Minas

+1

Praca idealnie –

9

zamiast tego:

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

dodać to:

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

on pracował dla mnie !!!

+0

Nadal nie działa. –

0

Sprawdź wersję swojego buildu.

Jeśli przełączyłeś z release na debug, zwykle otrzymujesz również kod wyniku 2.

Przejście z powrotem na release załatwiło sprawę.

Powiązane problemy