mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-30 12:57:12 +01:00
Share media file after downloading.
This commit is contained in:
parent
3218ff10f1
commit
7f91f89599
@ -115,7 +115,7 @@ public class DownloadMediaService extends Service {
|
|||||||
if (currentTime - time > 1000) {
|
if (currentTime - time > 1000) {
|
||||||
time = currentTime;
|
time = currentTime;
|
||||||
updateNotification(mediaType, 0,
|
updateNotification(mediaType, 0,
|
||||||
(int) ((100 * bytesRead) / contentLength), randomNotificationIdOffset, null);
|
(int) ((100 * bytesRead) / contentLength), randomNotificationIdOffset, null, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -316,15 +316,15 @@ public class DownloadMediaService extends Service {
|
|||||||
switch (errorCode) {
|
switch (errorCode) {
|
||||||
case ERROR_CANNOT_GET_DESTINATION_DIRECTORY:
|
case ERROR_CANNOT_GET_DESTINATION_DIRECTORY:
|
||||||
updateNotification(mediaType, R.string.downloading_image_or_gif_failed_cannot_get_destination_directory,
|
updateNotification(mediaType, R.string.downloading_image_or_gif_failed_cannot_get_destination_directory,
|
||||||
-1, randomNotificationIdOffset, null);
|
-1, randomNotificationIdOffset, null, null);
|
||||||
break;
|
break;
|
||||||
case ERROR_FILE_CANNOT_DOWNLOAD:
|
case ERROR_FILE_CANNOT_DOWNLOAD:
|
||||||
updateNotification(mediaType, R.string.downloading_media_failed_cannot_download_media,
|
updateNotification(mediaType, R.string.downloading_media_failed_cannot_download_media,
|
||||||
-1, randomNotificationIdOffset, null);
|
-1, randomNotificationIdOffset, null, null);
|
||||||
break;
|
break;
|
||||||
case ERROR_FILE_CANNOT_SAVE:
|
case ERROR_FILE_CANNOT_SAVE:
|
||||||
updateNotification(mediaType, R.string.downloading_media_failed_cannot_save_to_destination_directory,
|
updateNotification(mediaType, R.string.downloading_media_failed_cannot_save_to_destination_directory,
|
||||||
-1, randomNotificationIdOffset, null);
|
-1, randomNotificationIdOffset, null, null);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
EventBus.getDefault().post(new DownloadMediaEvent(false));
|
EventBus.getDefault().post(new DownloadMediaEvent(false));
|
||||||
@ -332,13 +332,8 @@ public class DownloadMediaService extends Service {
|
|||||||
MediaScannerConnection.scanFile(
|
MediaScannerConnection.scanFile(
|
||||||
DownloadMediaService.this, new String[]{destinationFileUri.toString()}, null,
|
DownloadMediaService.this, new String[]{destinationFileUri.toString()}, null,
|
||||||
(path, uri) -> {
|
(path, uri) -> {
|
||||||
Intent intent = new Intent();
|
|
||||||
intent.setAction(android.content.Intent.ACTION_VIEW);
|
|
||||||
intent.setDataAndType(destinationFileUri, mimeType);
|
|
||||||
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
|
||||||
PendingIntent pendingIntent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.getActivity(DownloadMediaService.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE) : PendingIntent.getActivity(DownloadMediaService.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
|
|
||||||
updateNotification(mediaType, R.string.downloading_media_finished, -1,
|
updateNotification(mediaType, R.string.downloading_media_finished, -1,
|
||||||
randomNotificationIdOffset, pendingIntent);
|
randomNotificationIdOffset, destinationFileUri, mimeType);
|
||||||
EventBus.getDefault().post(new DownloadMediaEvent(true));
|
EventBus.getDefault().post(new DownloadMediaEvent(true));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -414,7 +409,7 @@ public class DownloadMediaService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateNotification(int mediaType, int contentStringResId, int progress, int randomNotificationIdOffset,
|
private void updateNotification(int mediaType, int contentStringResId, int progress, int randomNotificationIdOffset,
|
||||||
PendingIntent pendingIntent) {
|
Uri mediaUri, String mimeType) {
|
||||||
if (notificationManager != null) {
|
if (notificationManager != null) {
|
||||||
if (progress < 0) {
|
if (progress < 0) {
|
||||||
builder.setProgress(0, 0, false);
|
builder.setProgress(0, 0, false);
|
||||||
@ -424,8 +419,23 @@ public class DownloadMediaService extends Service {
|
|||||||
if (contentStringResId != 0) {
|
if (contentStringResId != 0) {
|
||||||
builder.setContentText(getString(contentStringResId));
|
builder.setContentText(getString(contentStringResId));
|
||||||
}
|
}
|
||||||
if (pendingIntent != null) {
|
if (mediaUri != null) {
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction(android.content.Intent.ACTION_VIEW);
|
||||||
|
intent.setDataAndType(mediaUri, mimeType);
|
||||||
|
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
PendingIntent pendingIntent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.getActivity(DownloadMediaService.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE) : PendingIntent.getActivity(DownloadMediaService.this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||||
builder.setContentIntent(pendingIntent);
|
builder.setContentIntent(pendingIntent);
|
||||||
|
|
||||||
|
Intent shareIntent = new Intent();
|
||||||
|
shareIntent.setAction(Intent.ACTION_SEND);
|
||||||
|
shareIntent.putExtra(Intent.EXTRA_STREAM, mediaUri);
|
||||||
|
shareIntent.setType(mimeType);
|
||||||
|
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
Intent intentAction = Intent.createChooser(shareIntent, getString(R.string.share));
|
||||||
|
PendingIntent shareActionPendingIntent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.getActivity(this, 1, intentAction, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE) : PendingIntent.getActivity(this, 1, intentAction, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||||
|
|
||||||
|
builder.addAction(new NotificationCompat.Action(R.drawable.ic_notification, getString(R.string.share), shareActionPendingIntent));
|
||||||
}
|
}
|
||||||
notificationManager.notify(getNotificationId(mediaType, randomNotificationIdOffset), builder.build());
|
notificationManager.notify(getNotificationId(mediaType, randomNotificationIdOffset), builder.build());
|
||||||
}
|
}
|
||||||
|
@ -202,7 +202,7 @@ public class DownloadRedditVideoService extends Service {
|
|||||||
checkForDuplicates = dir.findFile(fileNameWithoutExtension + ".mp4");
|
checkForDuplicates = dir.findFile(fileNameWithoutExtension + ".mp4");
|
||||||
num++;
|
num++;
|
||||||
}
|
}
|
||||||
picFile = dir.createFile("video/*", fileNameWithoutExtension + ".mp4");
|
picFile = dir.createFile("video/mp4", fileNameWithoutExtension + ".mp4");
|
||||||
if (picFile == null) {
|
if (picFile == null) {
|
||||||
downloadFinished(null, ERROR_CANNOT_GET_DESTINATION_DIRECTORY, randomNotificationIdOffset);
|
downloadFinished(null, ERROR_CANNOT_GET_DESTINATION_DIRECTORY, randomNotificationIdOffset);
|
||||||
return;
|
return;
|
||||||
@ -414,7 +414,7 @@ public class DownloadRedditVideoService extends Service {
|
|||||||
} else {
|
} else {
|
||||||
ContentValues contentValues = new ContentValues();
|
ContentValues contentValues = new ContentValues();
|
||||||
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, destinationFileName);
|
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, destinationFileName);
|
||||||
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "video/*");
|
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "video/mp4");
|
||||||
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, destinationFileUriString);
|
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, destinationFileUriString);
|
||||||
contentValues.put(MediaStore.Video.Media.IS_PENDING, 1);
|
contentValues.put(MediaStore.Video.Media.IS_PENDING, 1);
|
||||||
|
|
||||||
@ -567,12 +567,7 @@ public class DownloadRedditVideoService extends Service {
|
|||||||
MediaScannerConnection.scanFile(
|
MediaScannerConnection.scanFile(
|
||||||
this, new String[]{destinationFileUri.toString()}, null,
|
this, new String[]{destinationFileUri.toString()}, null,
|
||||||
(path, uri) -> {
|
(path, uri) -> {
|
||||||
Intent intent = new Intent();
|
updateNotification(R.string.downloading_reddit_video_finished, -1, randomNotificationIdOffset, destinationFileUri);
|
||||||
intent.setAction(android.content.Intent.ACTION_VIEW);
|
|
||||||
intent.setDataAndType(destinationFileUri, "video/*");
|
|
||||||
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
|
||||||
PendingIntent pendingIntent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE) : PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
|
|
||||||
updateNotification(R.string.downloading_reddit_video_finished, -1, randomNotificationIdOffset, pendingIntent);
|
|
||||||
EventBus.getDefault().post(new DownloadRedditVideoEvent(true));
|
EventBus.getDefault().post(new DownloadRedditVideoEvent(true));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -587,7 +582,7 @@ public class DownloadRedditVideoService extends Service {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateNotification(int contentStringResId, int progress, int randomNotificationIdOffset, PendingIntent pendingIntent) {
|
private void updateNotification(int contentStringResId, int progress, int randomNotificationIdOffset, Uri mediaUri) {
|
||||||
if (notificationManager != null) {
|
if (notificationManager != null) {
|
||||||
if (progress < 0) {
|
if (progress < 0) {
|
||||||
builder.setProgress(0, 0, false);
|
builder.setProgress(0, 0, false);
|
||||||
@ -597,8 +592,23 @@ public class DownloadRedditVideoService extends Service {
|
|||||||
if (contentStringResId != 0) {
|
if (contentStringResId != 0) {
|
||||||
builder.setContentText(getString(contentStringResId));
|
builder.setContentText(getString(contentStringResId));
|
||||||
}
|
}
|
||||||
if (pendingIntent != null) {
|
if (mediaUri != null) {
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction(android.content.Intent.ACTION_VIEW);
|
||||||
|
intent.setDataAndType(mediaUri, "video/mp4");
|
||||||
|
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
PendingIntent pendingIntent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE) : PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||||
|
|
||||||
builder.setContentIntent(pendingIntent);
|
builder.setContentIntent(pendingIntent);
|
||||||
|
|
||||||
|
Intent shareIntent = new Intent();
|
||||||
|
shareIntent.setAction(Intent.ACTION_SEND);
|
||||||
|
shareIntent.putExtra(Intent.EXTRA_STREAM, mediaUri);
|
||||||
|
shareIntent.setType("video/mp4");
|
||||||
|
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
Intent intentAction = Intent.createChooser(shareIntent, getString(R.string.share));
|
||||||
|
PendingIntent shareActionPendingIntent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.getActivity(this, 1, intentAction, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE) : PendingIntent.getActivity(this, 1, intentAction, PendingIntent.FLAG_CANCEL_CURRENT);
|
||||||
|
builder.addAction(new NotificationCompat.Action(R.drawable.ic_notification, getString(R.string.share), shareActionPendingIntent));
|
||||||
}
|
}
|
||||||
notificationManager.notify(NotificationUtils.DOWNLOAD_REDDIT_VIDEO_NOTIFICATION_ID + randomNotificationIdOffset, builder.build());
|
notificationManager.notify(NotificationUtils.DOWNLOAD_REDDIT_VIDEO_NOTIFICATION_ID + randomNotificationIdOffset, builder.build());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user