Fix chosen location not being sent sometimes.

This commit is contained in:
Clark
2023-06-06 11:42:24 -04:00
committed by Cody Henthorne
parent eae066b3a2
commit c491c9dc8c
5 changed files with 105 additions and 39 deletions

View File

@@ -6,9 +6,11 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.location.Address;
import android.location.Geocoder;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
@@ -25,18 +27,26 @@ import androidx.fragment.app.Fragment;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.location.SignalMapView;
import org.thoughtcrime.securesms.providers.BlobProvider;
import org.thoughtcrime.securesms.util.BitmapUtil;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.concurrent.ListenableFuture;
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException;
/**
* Allows selection of an address from a google map.
@@ -180,9 +190,29 @@ public final class PlacePickerActivity extends AppCompatActivity {
String address = currentAddress != null && currentAddress.getAddressLine(0) != null ? currentAddress.getAddressLine(0) : "";
AddressData addressData = new AddressData(currentLocation.latitude, currentLocation.longitude, address);
returnIntent.putExtra(ADDRESS_INTENT, addressData);
setResult(RESULT_OK, returnIntent);
finish();
SimpleProgressDialog.DismissibleDialog dismissibleDialog = SimpleProgressDialog.showDelayed(this);
MapView mapView = findViewById(R.id.map_view);
SignalMapView.snapshot(currentLocation, mapView).addListener(new ListenableFuture.Listener<>() {
@Override
public void onSuccess(Bitmap result) {
dismissibleDialog.dismiss();
byte[] blob = BitmapUtil.toByteArray(result);
Uri uri = BlobProvider.getInstance()
.forData(blob)
.withMimeType(MediaUtil.IMAGE_JPEG)
.createForSingleSessionInMemory();
returnIntent.putExtra(ADDRESS_INTENT, addressData);
returnIntent.setData(uri);
setResult(RESULT_OK, returnIntent);
finish();
}
@Override
public void onFailure(ExecutionException e) {
dismissibleDialog.dismiss();
Log.e(TAG, "Failed to generate snapshot", e);
}
});
}
private void enableMyLocationButtonIfHaveThePermission(GoogleMap googleMap) {