Files
Melo/android/app/src/main/kotlin/de/baka/melo/GeteiltBridge.kt
T
Hermes (Server) 60c57577a3 Cover-Farbe, Teilen aus YouTube, Android Auto, geschärfte Typografie
P3-Liste aus dem UX-Review: Player nimmt Cover-Farbe auf, "Teilen" aus
YouTube trägt die Adresse in den Downloader ein, Android Auto blättert
durch die Bibliothek, Laufweite der Typografie geschärft, Überschriften
vereinheitlicht. 533 Tests grün, flutter analyze ohne Befund.
2026-08-25 09:09:27 +02:00

48 lines
1.5 KiB
Kotlin

package de.baka.melo
import android.content.Intent
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
/**
* Reicht Text weiter, den eine andere App ueber "Teilen" an Melo schickt —
* in der Regel eine YouTube-Adresse.
*
* Eigene Bruecke statt eines Zusatzpakets: das Projekt hat fuer MediaStore
* und Klangeffekte bereits eigene (siehe MediaStoreBridge).
*/
class GeteiltBridge {
companion object {
const val CHANNEL = "de.baka.melo/geteilt"
}
private var offen: String? = null
/**
* Merkt sich den Text eines SEND-Intents. Wird sowohl beim Start als
* auch bei onNewIntent aufgerufen: die Activity laeuft mit singleTop,
* ein zweites Teilen startet sie also nicht neu.
*/
fun nimm(intent: Intent?) {
if (intent?.action != Intent.ACTION_SEND) return
if (intent.type != "text/plain") return
offen = intent.getStringExtra(Intent.EXTRA_TEXT)
// Aus dem Intent entfernen, damit ein Lagewechsel (Drehen) ihn nicht
// ein zweites Mal liefert.
intent.removeExtra(Intent.EXTRA_TEXT)
}
fun handle(call: MethodCall, result: MethodChannel.Result) {
when (call.method) {
"hole" -> {
// Nach dem Abholen leeren: sonst spraenge die App bei jedem
// Wiedereintritt erneut in den Downloader.
val text = offen
offen = null
result.success(text)
}
else -> result.notImplemented()
}
}
}