siyuan-note / siyuan

A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang.
https://b3log.org/siyuan
GNU Affero General Public License v3.0
17.15k stars 1.28k forks source link

Android: catch SEND intents to import text #11618

Open xandro0777 opened 1 month ago

xandro0777 commented 1 month ago

In what scenarios do you need this feature?

I want to export notes from another notes app supporting markdown to this one.

One easy possibility would be to share the Note from the other app, this does send a SEND intent with the text attached.

However siyuan, unlike many other note apps does apparently not handle this intent.

Describe the optimal solution

Catch intents Like following and offer a way to import the text.

intent:#Intent;action=android.intent.action.SEND;type=text/plain;launchFlags=0x1b080000;S.android.intent.extra.TEXT=%E2%98%90%20P-mol%0A%E2%98%90%20Ban%C3%A1ny%0A%E2%98%90%20Weier%0A%E2%98%90%20Lauch%0A%E2%98%90%20Rum%0A%E2%98%90%20Pfirsich%0A%E2%98%90%20En%C3%BCsse%0A%E2%98%90%20Wemnental%0A%E2%98%90%20%C3%84pfel%0A%E2%98%90%20Zucker%0A%E2%98%90%20Milch%0A%E2%98%90%20Klopapier%0A%E2%98%90%20T-Papier%0A%E2%98%90%20D-Dent%0A%E2%98%90%20%C4%8Cokol%C3%A1da%0A%E2%98%90%20H-Tee%0A%E2%98%90%20Ty%C4%8Dinky%0A%E2%98%90%20%C4%8Cesnek%0A%E2%98%90%20T-mark%0A%E2%98%90%20Chleba%0A%E2%98%90%20Ananas%2FPfirsich%0A%E2%98%90%20Calcium%0A%E2%98%90%20H-Flocken%20Kernig%0A%E2%98%90%20P-Tee%0A%E2%98%90%20TePe%202%2F0.5%0A%E2%98%90%20Daxofit%0A%E2%98%90%20WC%20Sitz%20gepolstert%20rozte%C4%8D%2015cm%20%2C%2024-37*30-44%0A%E2%98%90%20Pfirsiche%0A%E2%98%90%20Mundwasser%0A%E2%98%90%20K-Tee%0A%E2%98%90%20P%C4%8Dinky%20Kland%0A%E2%98%90%20Calcium%20400mg%2BD3%202.5ug%0A%E2%98%90%20Lippenpflege%0A%E2%98%90%20Ananas%0A%E2%98%90%20T-saft%0A%E2%98%90%20Ke%C5%A1%C5%AFs%0A%E2%98%90%20Raj%C4%8D%C3%A1tka%0A%E2%98%90%20Sal%C3%A1m%0A%E2%98%90%20Mref%0A%E2%98%90%20Ubrus%2C%20st%C5%AFl%2098.5*56.5%0A%E2%98%90%20Ubrus%2C%2056.5*98.5%0A%E2%98%90%20Meistens%20159%2B63%2C%20min%20180%0A%E2%98%90%20%C5%A0leha%C4%8Dka%0A%E2%98%90%20HG%0A%E2%98%90%20P-Beere%0A%E2%98%90%20Ajona%0A%E2%98%90%20Daxofit%0A%E2%98%90%20Z-B%C3%BCrste%0A%E2%98%90%20Normal%2030w%20Halogen%0A%E2%98%90%20GU10%2018W%20Halogen%0A%E2%98%90%20Zwiebeln;S.android.intent.extra.TITLE=Einkauf;end 
------------ 
ACTION: android.intent.action.SEND 
MIME: text/plain 
URI: intent:#Intent;action=android.intent.action.SEND;type=text/plain;launchFlags=0x1b080000;S.android.intent.extra.TEXT=%E2%98%90%20P-mol%0A%E2%98%90%20Ban%C3%A1ny%0A%E2%98%90%20Weier%0A%E2%98%90%20Lauch%0A%E2%98%90%20Rum%0A%E2%98%90%20Pfirsich%0A%E2%98%90%20En%C3%BCsse%0A%E2%98%90%20Wemnental%0A%E2%98%90%20%C3%84pfel%0A%E2%98%90%20Zucker%0A%E2%98%90%20Milch%0A%E2%98%90%20Klopapier%0A%E2%98%90%20T-Papier%0A%E2%98%90%20D-Dent%0A%E2%98%90%20%C4%8Cokol%C3%A1da%0A%E2%98%90%20H-Tee%0A%E2%98%90%20Ty%C4%8Dinky%0A%E2%98%90%20%C4%8Cesnek%0A%E2%98%90%20T-mark%0A%E2%98%90%20Chleba%0A%E2%98%90%20Ananas%2FPfirsich%0A%E2%98%90%20Calcium%0A%E2%98%90%20H-Flocken%20Kernig%0A%E2%98%90%20P-Tee%0A%E2%98%90%20TePe%202%2F0.5%0A%E2%98%90%20Daxofit%0A%E2%98%90%20WC%20Sitz%20gepolstert%20rozte%C4%8D%2015cm%20%2C%2024-37*30-44%0A%E2%98%90%20Pfirsiche%0A%E2%98%90%20Mundwasser%0A%E2%98%90%20K-Tee%0A%E2%98%90%20P%C4%8Dinky%20Kland%0A%E2%98%90%20Calcium%20400mg%2BD3%202.5ug%0A%E2%98%90%20Lippenpflege%0A%E2%98%90%20Ananas%0A%E2%98%90%20T-saft%0A%E2%98%90%20Ke%C5%A1%C5%AFs%0A%E2%98%90%20Raj%C4%8D%C3%A1tka%0A%E2%98%90%20Sal%C3%A1m%0A%E2%98%90%20Mref%0A%E2%98%90%20Ubrus%2C%20st%C5%AFl%2098.5*56.5%0A%E2%98%90%20Ubrus%2C%2056.5*98.5%0A%E2%98%90%20Meistens%20159%2B63%2C%20min%20180%0A%E2%98%90%20%C5%A0leha%C4%8Dka%0A%E2%98%90%20HG%0A%E2%98%90%20P-Beere%0A%E2%98%90%20Ajona%0A%E2%98%90%20Daxofit%0A%E2%98%90%20Z-B%C3%BCrste%0A%E2%98%90%20Normal%2030w%20Halogen%0A%E2%98%90%20GU10%2018W%20Halogen%0A%E2%98%90%20Zwiebeln;S.android.intent.extra.TITLE=Einkauf;end 
FLAGS: 
FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT 
FLAG_RECEIVER_FOREGROUND 
FLAG_ACTIVITY_FORWARD_RESULT 
FLAG_ACTIVITY_PREVIOUS_IS_TOP 
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 
EXTRAS: 
1 Class: java.lang.String 
Key: android.intent.extra.TEXT 
Value: ☐ P-mol ☐ Banány ☐ Weier ☐ Lauch ☐ Rum ☐ Pfirsich ☐ Enüsse ☐ Wemnental ☐ Äpfel ☐ Zucker ☐ Milch ☐ Klopapier ☐ T-Papier ☐ D-Dent ☐ Čokoláda ☐ H-Tee ☐ Tyčinky ☐ Česnek ☐ T-mark ☐ Chleba ☐ Ananas/Pfirsich ☐ Calcium ☐ H-Flocken Kernig ☐ P-Tee ☐ TePe 2/0.5 ☐ Daxofit ☐ WC Sitz gepolstert rozteč 15cm , 24-37*30-44 ☐ Pfirsiche ☐ Mundwasser ☐ K-Tee ☐ Pčinky Kland ☐ Calcium 400mg+D3 2.5ug ☐ Lippenpflege ☐ Ananas ☐ T-saft ☐ Kešůs ☐ Rajčátka ☐ Salám ☐ Mref ☐ Ubrus, stůl 98.5*56.5 ☐ Ubrus, 56.5*98.5 ☐ Meistens 159+63, min 180 ☐ Šlehačka ☐ HG ☐ P-Beere ☐ Ajona ☐ Daxofit ☐ Z-Bürste ☐ Normal 30w Halogen ☐ GU10 18W Halogen ☐ Zwiebeln 
2 Class: java.lang.String 
Key: android.intent.extra.TITLE 
Value: Einkauf 

------------ 

MATCHING ACTIVITIES: 
Bluetooth (com.android.bluetooth - com.android.bluetooth.opp.BluetoothOppLauncherActivity) 
Chrome (com.android.chrome - com.google.android.apps.chrome.IntentDispatcher) 
Gmail (com.google.android.gm - com.google.android.gm.ComposeActivityGmailExternal) 
Quick Share (com.google.android.gms - com.google.android.gms.nearby.sharing.send.SendActivity) 
Read aloud (com.google.android.marvin.talkback - com.google.android.accessibility.selecttospeak.popup.SelectToSpeakPopupActivity) 
Aurora Store (com.aurora.store - com.aurora.store.MainActivity) 
Tessercube (com.dimension.tessercube - com.sujitech.tessercubecore.activity.message.InterpretActivity) 
Tessercube (com.dimension.tessercube - com.sujitech.tessercubecore.activity.keypair.InputPrivateKeyActivity) 
Tessercube (com.dimension.tessercube - com.sujitech.tessercubecore.activity.contact.ImportContactActivity) 
Librera FD (com.foobnix.pro.pdf.reader - com.foobnix.zipmanager.SendReceiveActivity) 
K-9 Mail (com.fsck.k9 - com.fsck.k9.activity.MessageCompose) 
Book Reader (com.github.axet.bookreader - com.github.axet.bookreader.activities.MainActivity) 
Voice (com.google.android.apps.googlevoice - com.google.android.apps.voice.home.androidintents.AndroidIntentActivity) 
Hacki (com.jiaqifeng.hacki - com.jiaqifeng.hacki.MainActivity) 
Quick download (com.junkfood.seal - com.junkfood.seal.QuickDownloadActivity) 
Seal (com.junkfood.seal - com.junkfood.seal.MainActivity) 
My Brain (com.mhss.app.mybrain - com.mhss.app.mybrain.presentation.bookmarks.SaveBookmarkActivity) 
My Brain (com.mhss.app.mybrain - com.mhss.app.mybrain.domain.use_case.tasks.AddTaskFromShareActivity) 
My Brain (com.mhss.app.mybrain - com.mhss.app.mybrain.presentation.notes.AddNoteFromShareActivity) 
Notes (com.nononsenseapps.notepad - com.nononsenseapps.notepad.activities.main.ActivityMain_) 
ChatGPT (com.openai.chatgpt - com.openai.chatgpt.MainActivity) 
Orgzly (com.orgzly - com.orgzly.android.ui.share.ShareActivity) 
Orgzly Revived (com.orgzlyrevived - com.orgzly.android.ui.share.ShareActivity) 
URL to PDF Converter (com.prostudio.urltopdfconverter - com.prostudio.urltopdfconverter.MainActivity) 
markdownr (com.sanzoghenzo.markdownr - com.sanzoghenzo.markdownr.MainActivity) 
QR Generator (com.secuso.privacyFriendlyCodeScanner - com.secuso.privacyfriendlycodescanner.qrscanner.ui.activities.generator.QrGeneratorOverviewActivity) 
SMS Messenger (com.simplemobiletools.smsmessenger - com.simplemobiletools.smsmessenger.activities.NewConversationActivity) 
Browser (com.stoutner.privacybrowser.standard - com.stoutner.privacybrowser.activities.MainWebViewActivity) 
Note Editor (com.sunilpaulmathew.snotz - com.sunilpaulmathew.snotz.activities.SharedNotePickerActivity) 
Copy (com.tachibana.downloader - com.tachibana.downloader.ui.SendTextToClipboard) 
Download Navi (com.tachibana.downloader - com.tachibana.downloader.ui.adddownload.AddDownloadActivity) 
Browser (com.tachibana.downloader - com.tachibana.downloader.ui.browser.BrowserActivity) 
Termux (com.termux - com.termux.filepicker.TermuxFileReceiverActivity) 
Simple Clipboard Editor (com.trianguloy.clipboardeditor - com.trianguloy.clipboardeditor.Editor) 
URLCheck (com.trianguloy.urlchecker - com.trianguloy.urlchecker.dialogs.MainDialog) 
xBrowserSync (com.xBrowserSync.android - com.xBrowserSync.android.MainActivity) 
FOSS Browser (de.baumann.browser - de.baumann.browser.activity.BrowserActivity) 
translator (de.monocles.translator - de.monocles.translator.ui.MainActivity) 
ImapNotes3 (de.niendo.ImapNotes3 - de.niendo.ImapNotes3.ListActivity) 
Quillpad (io.github.quillpad - org.qosp.notes.ui.MainActivity) 
Barinsta (me.austinhuang.instagrabber - awais.instagrabber.activities.MainActivity) 
Linkbox (me.loyko.ronald.linkbox - me.loyko.ronald.linkbox.MainActivity) 
Open Markdown Notes (net.basov.omn.fdroid - net.basov.omn.MainActivity) 
Joplin (net.cozic.joplin - net.cozic.joplin.MainActivity) 
OsmAnd~ (net.osmand.plus - net.osmand.plus.activities.MapActivity) 
Send text to device (nodomain.freeyourgadget.gadgetbridge - nodomain.freeyourgadget.gadgetbridge.activities.TextReceiverActivity) 
FW/App installer (nodomain.freeyourgadget.gadgetbridge - nodomain.freeyourgadget.gadgetbridge.activities.FwAppInstallerActivity) 
GPX Receiver Gadgetbridge (nodomain.freeyourgadget.gadgetbridge - nodomain.freeyourgadget.gadgetbridge.activities.GpxReceiverActivity) 
Print (org.billthefarmer.print - org.billthefarmer.print.Print) 
Squawker (org.ca.squawker - org.ca.squawker.MainActivity) 
Oshi Uploader (org.codeberg.quecomet.oshi - org.codeberg.quecomet.oshi.MainActivity) 
Save as (org.fossify.filemanager - org.fossify.filemanager.activities.SaveAsActivity) 
Fennec (org.mozilla.fennec_fdroid - org.mozilla.fenix.IntentReceiverActivity) 
Quillnote (org.qosp.notes - org.qosp.notes.ui.MainActivity) 
Create new task (org.tasks - com.todoroo.astrid.activity.ShareLinkActivity) 
Telegram FOSS (org.telegram.messenger - org.telegram.ui.LaunchActivity) 
Signal (org.thoughtcrime.securesms - org.thoughtcrime.securesms.sharing.v2.ShareActivity) 
Tor Browser (org.torproject.torbrowser - org.mozilla.fenix.IntentReceiverActivity) 
VLC (org.videolan.vlc - org.videolan.vlc.StartActivity) 
Image Toolbox (ru.tech.imageresizershrinker - ru.tech.imageresizershrinker.app.presentation.AppActivity) 
Feeds (ru.yanus171.feedexfork - ru.yanus171.feedexfork.activity.LoadLinkLaterActivity) 
Handy News Reader (ru.yanus171.feedexfork - ru.yanus171.feedexfork.activity.EntryActivityNewTask) 
Handy News Reader (ru.yanus171.feedexfork - ru.yanus171.feedexfork.activity.EditFeedActivity) 
WebCall (timur.webcall.callee - timur.webcall.callee.WebCallCalleeActivity) 
Manual (xyz.myachin.saveto - xyz.myachin.saveto.ui.share.manual.ManualShareActivity) 

Describe the candidate solution

No response

Other information

No response

Soltus commented 1 month ago

嗨,能否提供关于发起分享的应用程序的更多信息 Hi, can you provide more information on the application that initiated the sharing?

xandro0777 commented 1 month ago

I use https://f-droid.org/en/packages/io.github.quillpad/ , many other apps should work the in a similar way.

Soltus commented 1 month ago

谢谢,我会在晚些时候进行测试 Thanks, I'll test it later.

xandro0777 commented 1 month ago

Just noticed, Web Browsers use the same intent to share URLs and it would be nice to support this too.

Soltus commented 1 month ago

基本工作已经完成,仍有些细节需要处理 The basic work has been completed, and there are still some details to be dealt with.

分享意图不包含标题 The sharing intent does not include a title

改动太大无法PR合并 @88250

image

xandro0777 commented 1 month ago

Many thanks, my Chinese is not good enough to understand all the details in the images but it looks like a great enhancement to the App that has many facettes I didn't even think about when opening this issue.

The way Android works people will want to share and annotate images, videos, PDFs, URL links, content providers giving access to databases and perhaps more.

I will happily test whatever arrives in the F-Droid version and give more comments.

xandro0777 commented 3 weeks ago

Just got the latest version from F-Droid, nothing to test there yet?

Soltus commented 3 weeks ago

需要等待思源安卓重构才能继续,大概是明年 You need to wait for Siyuan Android refactoring to continue, probably next year