下面是我的代码,以获取当前位置的neaby位置.代码有时有效,有时不会改变任何东西.为什么会这样.我检查了api密钥是否有效,状态代码“ERROR”表示操作失败,没有关于
https://developers.google.com/android/reference/com/google/android/gms/common/api/CommonStatusCodes.html#constants的更详细信息
谢谢
以下是活动:
谢谢
以下是活动:
public class PlacesAPIActivity extends AppCompatActivity implements OnConnectionFailedListener,GoogleApiClient.ConnectionCallbacks { private static final String LOG_TAG = "PPPPPPPPPPPPPPPPP"; private static final int GOOGLE_API_CLIENT_ID =0; private GoogleApiClient mGoogleApiClient; private static final int PERMISSION_REQUEST_CODE = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_places_api); Log.d("resuktfvvvfdfd","onCreate: "); buildGoogleApiClient();} private synchronized void buildGoogleApiClient() { Button currentButton = (Button) findViewById(R.id.currentButton); mGoogleApiClient = new GoogleApiClient.Builder(PlacesAPIActivity.this) .addApi(Places.PLACE_DETECTION_API) .addApi(Places.GEO_DATA_API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .enableAutoManage(this,GOOGLE_API_CLIENT_ID,this) .build(); mGoogleApiClient.connect(); Log.d("connected",String.valueOf(mGoogleApiClient.isConnected())); currentButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mGoogleApiClient.isConnected()) { Log.d("connected1",String.valueOf(mGoogleApiClient.isConnected())); if (ContextCompat.checkSelfPermission(PlacesAPIActivity.this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(PlacesAPIActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},PERMISSION_REQUEST_CODE); } else { callPlaceDetectionApi(); } } } }); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.e(LOG_TAG,"Google Places API connection Failed with error code: " + connectionResult.getErrorCode()); Toast.makeText(this,"Google Places API connection Failed with error code:" + connectionResult.getErrorCode(),Toast.LENGTH_LONG).show(); } @Override public void onRequestPermissionsResult(int requestCode,String permissions[],int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_CODE: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { callPlaceDetectionApi(); } break; } } private void callPlaceDetectionApi() throws SecurityException { Log.d("mvkvkmvkmvkm","callPlaceDetectionApi: "); PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi .getCurrentPlace(mGoogleApiClient,null); Log.d("result",result.toString()); result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() { @Override public void onResult(PlaceLikelihoodBuffer likelyPlaces) { System.out.println("inside callback..."); Status status = likelyPlaces.getStatus(); System.out.println("Status.tostring"+status.toString()); System.out.println(status.isSuccess()); System.out.println(status.getStatusCode()); System.out.println(status.getStatusMessage()); System.out.println(status.getStatus()); for (PlaceLikelihood placeLikelihood : likelyPlaces) { Log.i(LOG_TAG,String.format("Place '%s' with " + "likelihood: %g",placeLikelihood.getPlace().getName(),placeLikelihood.getLikelihood())); } likelyPlaces.release(); } }); } @Override public void onStop() { super.onStop(); mGoogleApiClient.disconnect(); } @Override public void onConnected(@Nullable Bundle bundle) { } @Override public void onConnectionSuspended(int i) { } }
Android MAnifest文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.******"> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".PlacesAPIActivity"> <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"/> <Meta-data android:name="com.google.android.geo.API_KEY" android:value="A***************************o"/> </application> </manifest>
日志屏幕
07-06 15:56:32.499 10925-10925/com.example.utkarsh.nearby D/connected1: true 07-06 15:56:32.500 10925-10925/com.example.utkarsh.nearby D/mvkvkmvkmvkm: callPlaceDetectionApi: 07-06 15:56:32.554 10925-10925/com.example.utkarsh.nearby D/result: com.google.android.gms.location.places.internal.zzj$1@5dd8757 07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: inside callback... 07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: Status.tostringStatus{statusCode=ERROR,resolution=null} 07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: false 07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: 13 07-06 15:56:42.611 10925-10925/com.example.utkarsh.nearby I/System.out: ERROR 07-06 15:56:42.611 10925-10925/com.example.utkarsh.nearby I/System.out: Status{statusCode=ERROR,resolution=null}