Good afternoon) I am writing an application that works with google map api and vk api. When accessing the photos.search () method, an object consisting of the number of found photos and an array of VKApiPhoto objects should return. On a single launch, the answer is returned as it should be, but on the next launch, an object with an empty VKPhotoApi array is returned to any request. Why so?
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnMapClickListener, ActivityCompat.OnRequestPermissionsResultCallback { private GoogleMap googleMap; private Toolbar mActionBarToolbar; private ActionBarDrawerToggle actionBarDrawerToggle; private VKService vkService; private PermissionService permissionService = new PermissionService(); private Marker marker; private String accesToken; private ArrayList<VKApiPhoto> listFoto; private static final int LOCATION_PERMISSION_REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps_layout); mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); setSupportActionBar(mActionBarToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); vkService = new VKService(); VKSdk.login(this, vkService.scope); MapFragment mMapFragment = (MapFragment) getFragmentManager() .findFragmentById(R.id.map); mMapFragment.getMapAsync(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (!VKSdk.onActivityResult(requestCode, resultCode, data, new VKCallback<VKAccessToken>() { @Override public void onResult(VKAccessToken res) { accesToken = res.accessToken; } @Override public void onError(VKError error) { Toast.makeText(getApplicationContext(), "Bad", Toast.LENGTH_SHORT).show(); } })) super.onActivityResult(requestCode, resultCode, data); } @Override public void onMapReady(final GoogleMap googleMap) { this.googleMap = googleMap; permissionService.enableMyLocation(googleMap, LOCATION_PERMISSION_REQUEST_CODE, this); googleMap.setOnMapClickListener(this); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode != LOCATION_PERMISSION_REQUEST_CODE) { return; } if (permissionService.isPermissionGranted(permissions, grantResults, android.Manifest.permission.ACCESS_FINE_LOCATION)) { permissionService.enableMyLocation(googleMap, LOCATION_PERMISSION_REQUEST_CODE, this); } else { // Display the missing permission error dialog when the fragments resume. //mPermissionDenied = true; } } @Override public void onMapClick(LatLng latLng) { if (marker != null) { marker.remove(); } marker = googleMap.addMarker(new MarkerOptions().position(latLng).title("Selected GEO")); googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); final VKRequest vKRequest = new VKRequest("photos.search", VKParameters.from( VKApiConst.LAT, latLng.latitude, VKApiConst.LONG, latLng.longitude, "start_time", 1392005288, "end_time", 1479658261, "count", 200, "radius", 10000, VKApiConst.ACCESS_TOKEN, accesToken)); vKRequest.executeWithListener(new VKRequest.VKRequestListener() { @Override public void onComplete(VKResponse response) { super.onComplete(response); try { JSONArray photosArray = response.json.getJSONObject("response").getJSONArray("items"); for (int i = 0; i < photosArray.length(); i++) { VKApiPhoto photo = new VKApiPhoto(photosArray.getJSONObject(i)); listFoto.add(photo); } } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(VKError error) { Toast.makeText(getApplicationContext(), "Bad", Toast.LENGTH_SHORT).show(); } }); }
VKRequest vKRequest = new VKRequest("photos.search", VKParameters.from( VKApiConst.LAT, latLng.latitude, VKApiConst.LONG, latLng.longitude, "start_time", 1392005288, "end_time", 1479658261, "count", 200, "radius", 10000, VKApiConst.ACCESS_TOKEN, accesToken, VKPhotoArray.class));- Igor Igor