mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-25 13:39:24 +00:00
Fix bug where media would not send after being selected in gallery.
This commit is contained in:
@@ -1150,20 +1150,20 @@ public class ConversationParentFragment extends Fragment
|
||||
public void onAttachmentSelectorClicked(@NonNull AttachmentKeyboardButton button) {
|
||||
switch (button) {
|
||||
case GALLERY:
|
||||
AttachmentManager.selectGallery(requireActivity(), MEDIA_SENDER, recipient.get(), composeText.getTextTrimmed(), sendButton.getSelectedTransport(), inputPanel.getQuote().isPresent());
|
||||
AttachmentManager.selectGallery(this, MEDIA_SENDER, recipient.get(), composeText.getTextTrimmed(), sendButton.getSelectedTransport(), inputPanel.getQuote().isPresent());
|
||||
break;
|
||||
case FILE:
|
||||
AttachmentManager.selectDocument(requireActivity(), PICK_DOCUMENT);
|
||||
AttachmentManager.selectDocument(this, PICK_DOCUMENT);
|
||||
break;
|
||||
case CONTACT:
|
||||
AttachmentManager.selectContactInfo(requireActivity(), PICK_CONTACT);
|
||||
AttachmentManager.selectContactInfo(this, PICK_CONTACT);
|
||||
break;
|
||||
case LOCATION:
|
||||
AttachmentManager.selectLocation(requireActivity(), PICK_LOCATION);
|
||||
AttachmentManager.selectLocation(this, PICK_LOCATION);
|
||||
break;
|
||||
case PAYMENT:
|
||||
if (recipient.get().hasProfileKeyCredential()) {
|
||||
AttachmentManager.selectPayment(requireActivity(), recipient.getId());
|
||||
AttachmentManager.selectPayment(this, recipient.getId());
|
||||
} else {
|
||||
CanNotSendPaymentDialog.show(requireActivity());
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ class GifKeyboardPageFragment : LoggingFragment(R.layout.gif_keyboard_page_fragm
|
||||
}
|
||||
|
||||
private fun openGifSearch() {
|
||||
AttachmentManager.selectGif(requireActivity(), ConversationParentFragment.PICK_GIF, host.isMms())
|
||||
AttachmentManager.selectGif(requireParentFragment(), ConversationParentFragment.PICK_GIF, host.isMms())
|
||||
}
|
||||
|
||||
interface Host {
|
||||
|
||||
@@ -17,6 +17,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
@@ -54,8 +55,8 @@ public final class PlacePickerActivity extends AppCompatActivity {
|
||||
private AddressLookup addressLookup;
|
||||
private GoogleMap googleMap;
|
||||
|
||||
public static void startActivityForResultAtCurrentLocation(@NonNull Activity activity, int requestCode) {
|
||||
activity.startActivityForResult(new Intent(activity, PlacePickerActivity.class), requestCode);
|
||||
public static void startActivityForResultAtCurrentLocation(@NonNull Fragment fragment, int requestCode) {
|
||||
fragment.startActivityForResult(new Intent(fragment.requireActivity(), PlacePickerActivity.class), requestCode);
|
||||
}
|
||||
|
||||
public static AddressData addressFromData(@NonNull Intent data) {
|
||||
|
||||
@@ -36,6 +36,7 @@ import android.widget.Toast;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import org.signal.core.util.ThreadUtil;
|
||||
import org.signal.core.util.logging.Log;
|
||||
@@ -369,51 +370,51 @@ public class AttachmentManager {
|
||||
return deck;
|
||||
}
|
||||
|
||||
public static void selectDocument(Activity activity, int requestCode) {
|
||||
selectMediaType(activity, "*/*", null, requestCode);
|
||||
public static void selectDocument(Fragment fragment, int requestCode) {
|
||||
selectMediaType(fragment, "*/*", null, requestCode);
|
||||
}
|
||||
|
||||
public static void selectGallery(Activity activity, int requestCode, @NonNull Recipient recipient, @NonNull CharSequence body, @NonNull TransportOption transport, boolean hasQuote) {
|
||||
Permissions.with(activity)
|
||||
public static void selectGallery(Fragment fragment, int requestCode, @NonNull Recipient recipient, @NonNull CharSequence body, @NonNull TransportOption transport, boolean hasQuote) {
|
||||
Permissions.with(fragment)
|
||||
.request(Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
.ifNecessary()
|
||||
.withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio))
|
||||
.onAllGranted(() -> activity.startActivityForResult(MediaSelectionActivity.gallery(activity, transport, Collections.emptyList(), recipient.getId(), body, hasQuote), requestCode))
|
||||
.withPermanentDenialDialog(fragment.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio))
|
||||
.onAllGranted(() -> fragment.startActivityForResult(MediaSelectionActivity.gallery(fragment.requireContext(), transport, Collections.emptyList(), recipient.getId(), body, hasQuote), requestCode))
|
||||
.execute();
|
||||
}
|
||||
|
||||
public static void selectContactInfo(Activity activity, int requestCode) {
|
||||
Permissions.with(activity)
|
||||
public static void selectContactInfo(Fragment fragment, int requestCode) {
|
||||
Permissions.with(fragment)
|
||||
.request(Manifest.permission.READ_CONTACTS)
|
||||
.ifNecessary()
|
||||
.withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information))
|
||||
.withPermanentDenialDialog(fragment.getString(R.string.AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information))
|
||||
.onAllGranted(() -> {
|
||||
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
|
||||
activity.startActivityForResult(intent, requestCode);
|
||||
fragment.startActivityForResult(intent, requestCode);
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
|
||||
public static void selectLocation(Activity activity, int requestCode) {
|
||||
Permissions.with(activity)
|
||||
public static void selectLocation(Fragment fragment, int requestCode) {
|
||||
Permissions.with(fragment)
|
||||
.request(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||
.ifNecessary()
|
||||
.withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location))
|
||||
.onAllGranted(() -> PlacePickerActivity.startActivityForResultAtCurrentLocation(activity, requestCode))
|
||||
.withPermanentDenialDialog(fragment.getString(R.string.AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location))
|
||||
.onAllGranted(() -> PlacePickerActivity.startActivityForResultAtCurrentLocation(fragment, requestCode))
|
||||
.execute();
|
||||
}
|
||||
|
||||
public static void selectGif(Activity activity, int requestCode, boolean isForMms) {
|
||||
Intent intent = new Intent(activity, GiphyActivity.class);
|
||||
public static void selectGif(Fragment fragment, int requestCode, boolean isForMms) {
|
||||
Intent intent = new Intent(fragment.requireContext(), GiphyActivity.class);
|
||||
intent.putExtra(GiphyActivity.EXTRA_IS_MMS, isForMms);
|
||||
activity.startActivityForResult(intent, requestCode);
|
||||
fragment.startActivityForResult(intent, requestCode);
|
||||
}
|
||||
|
||||
public static void selectPayment(@NonNull Activity activity, @NonNull RecipientId recipientId) {
|
||||
Intent intent = new Intent(activity, PaymentsActivity.class);
|
||||
public static void selectPayment(@NonNull Fragment fragment, @NonNull RecipientId recipientId) {
|
||||
Intent intent = new Intent(fragment.requireContext(), PaymentsActivity.class);
|
||||
intent.putExtra(PaymentsActivity.EXTRA_PAYMENTS_STARTING_ACTION, R.id.action_directly_to_createPayment);
|
||||
intent.putExtra(PaymentsActivity.EXTRA_STARTING_ARGUMENTS, new CreatePaymentFragmentArgs.Builder(new PayeeParcelable(recipientId)).build().toBundle());
|
||||
activity.startActivity(intent);
|
||||
fragment.startActivity(intent);
|
||||
}
|
||||
|
||||
private @Nullable Uri getSlideUri() {
|
||||
@@ -424,7 +425,7 @@ public class AttachmentManager {
|
||||
return captureUri;
|
||||
}
|
||||
|
||||
private static void selectMediaType(Activity activity, @NonNull String type, @Nullable String[] extraMimeType, int requestCode) {
|
||||
private static void selectMediaType(Fragment fragment, @NonNull String type, @Nullable String[] extraMimeType, int requestCode) {
|
||||
final Intent intent = new Intent();
|
||||
intent.setType(type);
|
||||
|
||||
@@ -434,7 +435,7 @@ public class AttachmentManager {
|
||||
|
||||
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
|
||||
try {
|
||||
activity.startActivityForResult(intent, requestCode);
|
||||
fragment.startActivityForResult(intent, requestCode);
|
||||
return;
|
||||
} catch (ActivityNotFoundException anfe) {
|
||||
Log.w(TAG, "couldn't complete ACTION_OPEN_DOCUMENT, no activity found. falling back.");
|
||||
@@ -443,10 +444,10 @@ public class AttachmentManager {
|
||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||
|
||||
try {
|
||||
activity.startActivityForResult(intent, requestCode);
|
||||
fragment.startActivityForResult(intent, requestCode);
|
||||
} catch (ActivityNotFoundException anfe) {
|
||||
Log.w(TAG, "couldn't complete ACTION_GET_CONTENT intent, no activity found. falling back.");
|
||||
Toast.makeText(activity, R.string.AttachmentManager_cant_open_media_selection, Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(fragment.requireContext(), R.string.AttachmentManager_cant_open_media_selection, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user