diff --git a/res/drawable/ic_share_white.xml b/res/drawable/ic_share_white.xml new file mode 100644 --- /dev/null +++ b/res/drawable/ic_share_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/res/values/strings.xml b/res/values/strings.xml --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -177,6 +177,8 @@ Received files will appear in Downloads Files will be stored in the directory below Destination directory + Share + Share \"%s\" Notification filter Notifications will be synchronized for the selected apps. Internal storage diff --git a/src/org/kde/kdeconnect/Plugins/SharePlugin/ShareNotification.java b/src/org/kde/kdeconnect/Plugins/SharePlugin/ShareNotification.java --- a/src/org/kde/kdeconnect/Plugins/SharePlugin/ShareNotification.java +++ b/src/org/kde/kdeconnect/Plugins/SharePlugin/ShareNotification.java @@ -119,20 +119,34 @@ } Intent intent = new Intent(Intent.ACTION_VIEW); + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType(mimeType); if (Build.VERSION.SDK_INT >= 24) { //Nougat and later require "content://" uris instead of "file://" uris File file = new File(destinationUri.getPath()); Uri contentUri = FileProvider.getUriForFile(device.getContext(), "org.kde.kdeconnect_tp.fileprovider", file); intent.setDataAndType(contentUri, mimeType); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + + shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri); } else { intent.setDataAndType(destinationUri, mimeType); + shareIntent.putExtra(Intent.EXTRA_STREAM, destinationUri); } intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); TaskStackBuilder stackBuilder = TaskStackBuilder.create(device.getContext()); stackBuilder.addNextIntent(intent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentText(device.getContext().getResources().getString(R.string.received_file_text, filename)) .setContentIntent(resultPendingIntent); + + shareIntent = Intent.createChooser(shareIntent, + device.getContext().getString(R.string.share_received_file, destinationUri.getLastPathSegment())); + PendingIntent sharePendingIntent = PendingIntent.getActivity(device.getContext(), 0, + shareIntent, PendingIntent.FLAG_UPDATE_CURRENT); + NotificationCompat.Action.Builder shareAction = new NotificationCompat.Action.Builder( + R.drawable.ic_share_white, device.getContext().getString(R.string.share), sharePendingIntent); + builder.addAction(shareAction.build()); } }