| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- //go:build !ci && android
- // +build !ci,android
- package app
- /*
- #cgo LDFLAGS: -landroid -llog
- #include <stdlib.h>
- void openURL(uintptr_t java_vm, uintptr_t jni_env, uintptr_t ctx, char *url);
- void sendNotification(uintptr_t java_vm, uintptr_t jni_env, uintptr_t ctx, char *title, char *content);
- */
- import "C"
- import (
- "log"
- "net/url"
- "os"
- "path/filepath"
- "unsafe"
- "fyne.io/fyne/v2"
- "fyne.io/fyne/v2/internal/driver/mobile/app"
- )
- func (a *fyneApp) OpenURL(url *url.URL) error {
- urlStr := C.CString(url.String())
- defer C.free(unsafe.Pointer(urlStr))
- app.RunOnJVM(func(vm, env, ctx uintptr) error {
- C.openURL(C.uintptr_t(vm), C.uintptr_t(env), C.uintptr_t(ctx), urlStr)
- return nil
- })
- return nil
- }
- func (a *fyneApp) SendNotification(n *fyne.Notification) {
- titleStr := C.CString(n.Title)
- defer C.free(unsafe.Pointer(titleStr))
- contentStr := C.CString(n.Content)
- defer C.free(unsafe.Pointer(contentStr))
- app.RunOnJVM(func(vm, env, ctx uintptr) error {
- C.sendNotification(C.uintptr_t(vm), C.uintptr_t(env), C.uintptr_t(ctx), titleStr, contentStr)
- return nil
- })
- }
- func defaultVariant() fyne.ThemeVariant {
- return systemTheme
- }
- func rootConfigDir() string {
- filesDir := os.Getenv("FILESDIR")
- if filesDir == "" {
- log.Println("FILESDIR env was not set by android native code")
- return "/data/data" // probably won't work, but we can't make a better guess
- }
- return filepath.Join(filesDir, "fyne")
- }
|