2015-10-02 36 views
0

我正在Android Studio上使用Google地点API来根据位置显示感兴趣的地点。我正在使用PlacePicker Inentbuilder来完成此操作。发布后关闭地点选择器

当应用程序运行时,地点选取器启动并立即关闭(大约1-2秒)。

  • 我已经为android应用程序生成了公共API密钥,并将其包含在应用程序清单中的元数据标记中。
  • 我已经在开发者控制台上启用了“Google Places API for Android”API。
  • 我已经在build.gradle的依赖中包含了最新的播放服务版本。

我已经包含了我的代码和下面的Logcat。如果我需要包含其他内容,请告诉我。

的Manifest.xml:

<?xml version="1.0" encoding="utf-8"?> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/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.geo.API_KEY" 
     android:value="@string/google_maps_key" /> 

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

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".CoresActivity" 
     android:label="@string/title_activity_cores" > 
    </activity> 
    <activity 
     android:name=".MicrofoneActivity" 
     android:label="@string/title_activity_microfone" > 
    </activity> 
    <activity 
     android:name=".ConfirmaCoresActivity" 
     android:label="@string/title_activity_confirma_cores" > 
    </activity> 
    <activity 
     android:name=".BolaLocaActivity" 
     android:label="@string/title_activity_bola_loca" > 
    </activity> 
    <activity 
     android:name=".MapsActivity" 
     android:label="@string/title_activity_maps" > 
    </activity> 
    <activity 
     android:name=".PlacesAPIActivity" 
     android:label="@string/title_activity_place_api" > 
    </activity> 
</application> 

PlacesAPIActivity - 活动正在使用谷歌放置API:

package com.fastcoding.appbebado; 

import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.google.android.gms.common.GooglePlayServicesNotAvailableException; 
import com.google.android.gms.common.GooglePlayServicesRepairableException; 
import com.google.android.gms.location.places.Place; 
import com.google.android.gms.location.places.ui.PlacePicker; 


public class PlacesAPIActivity extends AppCompatActivity { 
    TextView getLocation; 
    int PLACE_PICKER_REQUEST = 1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_places_api); 
     getLocation = (TextView)findViewById(R.id.getLocTV); 
     getLocation.setClickable(true); 
     getLocation.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 
       Intent intent; 
       try { 
        intent = builder.build(getApplicationContext()); 
        startActivityForResult(intent, PLACE_PICKER_REQUEST); 
        Toast.makeText(PlacesAPIActivity.this,"start activity for result",Toast.LENGTH_LONG).show(); 
       } catch (GooglePlayServicesRepairableException e) { 
        e.printStackTrace(); 
       } catch (GooglePlayServicesNotAvailableException e) { 
        e.printStackTrace(); 
       } 

      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_place_api, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

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

的build.gradle(APP模块 - 这是关于ly模块)

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion '22.0.1' 

    defaultConfig { 
     applicationId "com.fastcoding.appbebado" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:22.2.1' 
    compile 'com.google.android.gms:play-services:7.5.0' 
} 
+0

显示'R.layout.activity_places_api' – snachmsm

回答

1

请粘贴您的logcat和manisfest文件。

可能是元数据标签应该读取android:name="com.google.android.geo.API_KEY" 它应该在Manifest中的<application>标签内。

+0

现在它的工作启用的Android您谷歌Places API的。谢谢你 –

+0

欢迎您,如果它已解决您的问题,也请在复选框中勾选绿色 – prat