1

私のプロジェクトではGoogleApiClientを動作させることができません。私はLocationServicesを使用していますが、onStartメソッドで呼び出されたclient.connect()を持っていても、OnConnectedは発砲していません。 私はstackoverflowを検索し、解決策を試しましたが、私はまだそれを動作させることはできません。 私は接続されているかどうかを確認しようとしましたが、client.isConnected()は常にfalseを出力します。 私の権限は以下のとおりです。GoogleAPIClient LocationServicesに接続できません。

android.permission.INTERNET android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_FINE_LOCATION

は、私がここで何かが足りないのですか?

編集:

private GoogleApiClient client; 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_my); 
ButterKnife.inject(this); 

buildGoogleApiClient(); 
} 

protected synchronized void buildGoogleApiClient() { 
client = new GoogleApiClient.Builder(this) 
.addConnectionCallbacks(this) 
.addOnConnectionFailedListener(this) 
.addApi(LocationServices.API).build(); 
} 

@Override 
public void onStart() { 
// client.connect(); 
super.onStart(); 

// ATTENTION: This was auto-generated to implement the App Indexing API. 
// See https://g.co/AppIndexing/AndroidStudio for more information. 
client.connect(); 
Log.e("Connected?", String.valueOf(client.isConnected())); 

} 

public void onConnectionFailed(ConnectionResult connectionResult) { 
Log.e("Failed?", connectionResult.getErrorMessage()); 
} 


@Override 
public void onConnected(Bundle bundle) { 
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
return; 
} 
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
client); 
longt = mLastLocation.getLongitude(); 
latt = mLastLocation.getLatitude(); 
if (mLastLocation != null) { 
// mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude())); 
// mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude())); 
} 

} 

答えて

1

これを試してみてください!!

最初に:buildGoogleApiClient()を削除します。 Oncreate();その後

public static final int REQUEST_CODE_RESOLUTION = 1; 

@Override 
protected void onResume() { 
    super.onResume(); 
    buildGoogleClient(); 
} 

private void buildGoogleClient(){ 
if(client != null){ 
client = new GoogleApiClient.Builder(this) 
.addApi(LocationServices.API) 
.addConnectionCallbacks(this) 
.addOnConnectionFailedListener(this).build(); 
} 
client.connect(); 
} 

    @Override 
public void onConnectionFailed(ConnectionResult result) { 
    Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); 
    if (!result.hasResolution()) { 
     // show the localized error dialog. 
     GoogleApiAvailability.getInstance().getErrorDialog(this, result.getErrorCode(), 0).show(); 
     return; 
    } 
    try { 
     result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); 
    } catch (SendIntentException e) { 
     Log.e(TAG, "Exception while starting resolution activity", e); 
    } 
} 

    @Override 
protected void onActivityResult(int requestCode, int resultCode, 
     Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQUEST_CODE_RESOLUTION && resultCode == RESULT_OK) { 
     client.connect(); 

    // Enter code get Latude and Longtude 

    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(client); 
longt = mLastLocation.getLongitude(); 
latt = mLastLocation.getLatitude(); 
if (mLastLocation != null) { 
    mLatitudeText.setText(mLastLocation.getLatitude()+""); 
    mLongitudeText.setText(mLastLocation.getLongitude()+""); 
} 
    } 
} 
+0

それが働いたが、私は別のエラーを得ました。これがまだ関連しているかどうかはわかりません。 'GoogleApiClientはこの呼び出しに必要なAPIを使用するように設定されていません。 ' – Redan

+0

Googleクライアントのチュートリアルはhttp://www.androidhive.info/2015/02/android-location-api-using-google-playにあります-services / –

関連する問題