|
|
@ -256,27 +256,16 @@ public class AttachmentManager {
|
|
|
|
|
|
|
|
|
|
|
|
public static void selectGallery(Activity activity, int requestCode, @NonNull Recipient recipient, @NonNull String body) {
|
|
|
|
public static void selectGallery(Activity activity, int requestCode, @NonNull Recipient recipient, @NonNull String body) {
|
|
|
|
Permissions.with(activity)
|
|
|
|
Permissions.with(activity)
|
|
|
|
.request(Manifest.permission.READ_EXTERNAL_STORAGE)
|
|
|
|
.request(Manifest.permission.READ_EXTERNAL_STORAGE)
|
|
|
|
.withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio))
|
|
|
|
.withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio))
|
|
|
|
.onAllGranted(() -> activity.startActivityForResult(MediaSendActivity.buildGalleryIntent(activity, recipient, body), requestCode))
|
|
|
|
.onAllGranted(() -> activity.startActivityForResult(MediaSendActivity.buildGalleryIntent(activity, recipient, body), requestCode))
|
|
|
|
.execute();
|
|
|
|
.execute();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void selectAudio(Activity activity, int requestCode) {
|
|
|
|
public static void selectAudio(Activity activity, int requestCode) {
|
|
|
|
selectMediaType(activity, "audio/*", null, requestCode);
|
|
|
|
selectMediaType(activity, "audio/*", null, requestCode);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void selectContactInfo(Activity activity, int requestCode) {
|
|
|
|
|
|
|
|
Permissions.with(activity)
|
|
|
|
|
|
|
|
.request(Manifest.permission.WRITE_CONTACTS)
|
|
|
|
|
|
|
|
.withPermanentDenialDialog(activity.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);
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.execute();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void selectGif(Activity activity, int requestCode) {
|
|
|
|
public static void selectGif(Activity activity, int requestCode) {
|
|
|
|
Intent intent = new Intent(activity, GiphyActivity.class);
|
|
|
|
Intent intent = new Intent(activity, GiphyActivity.class);
|
|
|
|
intent.putExtra(GiphyActivity.EXTRA_IS_MMS, false);
|
|
|
|
intent.putExtra(GiphyActivity.EXTRA_IS_MMS, false);
|
|
|
@ -293,28 +282,25 @@ public class AttachmentManager {
|
|
|
|
|
|
|
|
|
|
|
|
public void capturePhoto(Activity activity, int requestCode) {
|
|
|
|
public void capturePhoto(Activity activity, int requestCode) {
|
|
|
|
Permissions.with(activity)
|
|
|
|
Permissions.with(activity)
|
|
|
|
.request(Manifest.permission.CAMERA)
|
|
|
|
.request(Manifest.permission.CAMERA)
|
|
|
|
.withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_camera_permission_in_order_to_take_photos_but_it_has_been_permanently_denied))
|
|
|
|
.withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_camera_permission_in_order_to_take_photos_but_it_has_been_permanently_denied))
|
|
|
|
.onAllGranted(() -> {
|
|
|
|
.onAllGranted(() -> {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
File captureFile = File.createTempFile(
|
|
|
|
File captureFile = File.createTempFile("conversation-capture", ".jpg", ExternalStorageUtil.getImageDir(activity));
|
|
|
|
"conversation-capture",
|
|
|
|
Uri captureUri = FileProviderUtil.getUriFor(context, captureFile);
|
|
|
|
".jpg",
|
|
|
|
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
|
|
|
ExternalStorageUtil.getImageDir(activity));
|
|
|
|
captureIntent.putExtra(EXTRA_OUTPUT, captureUri);
|
|
|
|
Uri captureUri = FileProviderUtil.getUriFor(context, captureFile);
|
|
|
|
captureIntent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
|
|
|
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
|
|
|
if (captureIntent.resolveActivity(activity.getPackageManager()) != null) {
|
|
|
|
captureIntent.putExtra(EXTRA_OUTPUT, captureUri);
|
|
|
|
Log.d(TAG, "captureUri path is " + captureUri.getPath());
|
|
|
|
captureIntent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
|
|
|
this.captureUri = captureUri;
|
|
|
|
if (captureIntent.resolveActivity(activity.getPackageManager()) != null) {
|
|
|
|
activity.startActivityForResult(captureIntent, requestCode);
|
|
|
|
Log.d(TAG, "captureUri path is " + captureUri.getPath());
|
|
|
|
}
|
|
|
|
this.captureUri = captureUri;
|
|
|
|
} catch (IOException | NoExternalStorageException e) {
|
|
|
|
activity.startActivityForResult(captureIntent, requestCode);
|
|
|
|
throw new RuntimeException("Error creating image capture intent.", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (IOException | NoExternalStorageException e) {
|
|
|
|
})
|
|
|
|
throw new RuntimeException("Error creating image capture intent.", e);
|
|
|
|
.execute();
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.execute();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static void selectMediaType(Activity activity, @NonNull String type, @Nullable String[] extraMimeType, int requestCode) {
|
|
|
|
private static void selectMediaType(Activity activity, @NonNull String type, @Nullable String[] extraMimeType, int requestCode) {
|
|
|
@ -392,6 +378,5 @@ public class AttachmentManager {
|
|
|
|
|
|
|
|
|
|
|
|
return DOCUMENT;
|
|
|
|
return DOCUMENT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|