Ich kann die Ortsauswahl in meiner App nicht verwenden. Die API funktionierte dann nur einen Tag ohne weitere Erklärung. Der Picker wird nur für kurze Zeit angezeigt und schließt dann einfach und ohne Ausnahme in den Protokollen. Die onActivityResult-Funktion wird mit requestCode = 1, resultCode = 2 (Fehlercode) und ohne Daten aufgerufen. Der Beispielcode von Google macht dasselbe. Ich habe alles versucht, damit das funktioniert. Hat jemand etwas Ähnliches erlebt? Hilfe bitte.
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>
Aktivität.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();
}
}
}
Ich fand die Antwort auf meine eigene Frage.
Wenn jemand anderes auf dasselbe Problem stößt, stellen Sie sicher, dass Sie "Places API für Android" aktivieren und nicht nur "Places API" in der Developer Console . "Places API für Android" wird unter "APIs & Auth/APIs" nicht angezeigt, da dies (noch) keine beliebte API ist. Sie müssen danach mit dem API-Suchfeld danach suchen.
an Stelle von:
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="your_key"/>
füge das hinzu:
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="your_key" />
Es hat für mich funktioniert !!!
Überprüfen Sie Ihre Build-Variante.
Wenn Sie wieder von release
zu debug
gewechselt haben, erhalten Sie normalerweise auch den Ergebniscode 2
.
Die Umstellung auf release
hat für mich den Trick gebracht.