Implement direct share

(cherry picked from commit 4a5068b790dae7aa1c5c8e46693be6ffafef34c4)
This commit is contained in:
Stephen Paul Weber 2024-12-10 02:11:53 -05:00 committed by Arne
parent 238ce10c91
commit 439ec6d977
4 changed files with 19 additions and 0 deletions

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<share-target android:targetClass="eu.siacs.conversations.ui.ShareWithActivity">
<data android:mimeType="*/*" />
<category android:name="com.cheogram.android.SHARE_TARGET" />
</share-target>
</shortcuts>

View file

@ -193,6 +193,7 @@
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
</activity>
<activity
android:name=".ui.ConversationsActivity"

View file

@ -18,6 +18,7 @@ import androidx.core.graphics.drawable.IconCompat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.entities.Account;
@ -99,6 +100,7 @@ public class ShortcutService {
.setIntent(getShortcutIntent(contact))
.setIcon(IconCompat.createWithBitmap(xmppConnectionService.getAvatarService().getRoundedShortcut(contact)))
.setIsConversation()
.setCategories(Set.of("com.cheogram.android.SHARE_TARGET"))
.build();
}
@ -108,6 +110,7 @@ public class ShortcutService {
.setIntent(getShortcutIntent(mucOptions))
.setIcon(IconCompat.createWithBitmap(xmppConnectionService.getAvatarService().getRoundedShortcut(mucOptions)))
.setIsConversation()
.setCategories(Set.of("com.cheogram.android.SHARE_TARGET"))
.build();
}

View file

@ -178,6 +178,14 @@ public class ShareWithActivity extends XmppActivity
final ArrayList<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
this.share.uris = uris == null ? new ArrayList<>() : uris;
}
final var shortcutId = intent.getStringExtra(Intent.EXTRA_SHORTCUT_ID);
if (shortcutId != null) {
final var index = shortcutId.indexOf('#');
if (index >= 0) {
this.share.account = shortcutId.substring(0, index);
this.share.contact = shortcutId.substring(index+1);
}
}
if (xmppConnectionServiceBound) {
xmppConnectionService.populateWithOrderedConversations(
mConversations, this.share.uris.isEmpty(), false);