GoogleApiClient:不会触发onConnected或onConnectionFailed

所以,我试图让我的最后一个位置使用GoogleApiClient。 我正在执行一个连接语句,但onConnected不会触发,也不是onConnectionFailed射击。 有任何想法吗?

备注:我在模拟器上运行它,而不是真正的设备。 在模拟器上浏览工作。

package com.example.jdc.testjdc; import android.location.Location; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import com.google.android.gms.common.api.*; import com.google.android.gms.drive.*; import com.google.android.gms.location.LocationServices; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; import android.support.v4.app.FragmentActivity; import android.widget.TextView; public class MainActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener { private GoogleApiClient mGoogleApiClient; private Location mLastLocation; private TextView mLatitudeText; private TextView mLongitudeText; private TextView Toast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buildGoogleApiClient(); } // public GoogleApiClient mGoogleApiClient; protected synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .build(); // mGoogleApiClient.connect(); } @Override public void onConnectionFailed(ConnectionResult connectionResult){ Log.e("Connected failed", String.valueOf(mGoogleApiClient.isConnected())); } public void onStart(){ super.onStart(); Log.e("Connected?", String.valueOf(mGoogleApiClient.isConnected())); mGoogleApiClient.connect(); Log.e("Connected?", String.valueOf(mGoogleApiClient.isConnected())); } public void onConnected(Bundle connectionHint) { mLastLocation = LocationServices.FusedLocationApi.getLastLocation( mGoogleApiClient); if (mLastLocation != null) { mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude())); mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude())); TextView t=new TextView(this); t=(TextView)findViewById(R.id.mLatitude); t.setText(String.valueOf(mLastLocation.getLatitude())); setContentView(mLatitudeText); } } @Override public void onConnectionSuspended(int i) { } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, 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); } } 

这里是清单文件

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.jdc.testjdc" > package="com.google.android.gms.location.sample.basiclocationsample" > <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <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> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest> 

我在这里亏本 通过debugging器,我发现上述function从来​​没有被解雇。

Solutions Collecting From Web of "GoogleApiClient:不会触发onConnected或onConnectionFailed"

您需要在方法buildGoogleApiClient()注册callback。

尝试更改您的构buildGoogleApiClient()方法

  mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); 

所有你需要的只是添加监听器到你的客户端

  .addConnectionCallbacks(this) .addOnConnectionFailedListener(this)