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());
}
}