gpt4 book ai didi

android - 如何在 android 上为原生 fyne 应用程序发出 http 请求

转载 作者:行者123 更新时间:2023-12-04 04:06:01 24 4
gpt4 key购买 nike

我无法从在 android 上运行的 Go fyne 应用程序发出 http 请求,下面是一个简单的例子来说明这个问题

package main

import (

"io/ioutil"
"net/http"
"log"

"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/widget"

)


func main() {

app := app.New()
w := app.NewWindow("Android http issue")
w.SetContent(widget.NewVBox(
widget.NewLabel("Run test"),
widget.NewButton("Connect", func() {
go func() {
HttpGetData(w)
}()

}),
))
w.ShowAndRun()
}


func HttpGetData( win fyne.Window) {
resp, err := http.Get("http://date.jsontest.com/" )
if err != nil {
log.Println("%v", err)
}
defer resp.Body.Close()
bodyBytes, _ := ioutil.ReadAll(resp.Body)
StartScreen(win, string(bodyBytes))

}

func StartScreen(win fyne.Window, data string) {
l := widget.NewLabel("data" +data)
win.SetContent(l)

}
我可以使用 go run -tags mobile . -t 在 linux 上运行代码
第一屏
entry screen running on linux
然后我可以触发事件以向远程服务器发出 http get 请求并在 gui 中查看 http 响应
enter image description here
我们可以通过 go run -tags mobile . -t 看到一切正常在 linux 上
现在我使用 fyne 打包为 apk fyne package -os android -appID basic.client -icon ico.png 使用 adb 安装 adb install <path to apk>/basicExample.apk当我在 android 中运行应用程序时,我会进入第一个屏幕,然后像以前一样触发事件。
http 请求永远不会被触发,我只在 logcat 中收到一个密码错误 F/libc ( 4711): Fatal signal 6 (SIGABRT), code -6 in tid 4739 (basic.client) E/InputDispatcher( 535): channel '344d7ddf basic.client/org.golang.app.GoNativeActivity (server)' ~ Channel is unrecoverably broken and will be disposed!任何帮助将不胜感激
安卓 list
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="basic.client"
android:versionCode="1"
android:versionName="1.0">

<application android:label="Client" android:debuggable="true">

<uses-permission android:name="android.permission.INTERNET" />

<activity android:name="org.golang.app.GoNativeActivity"
android:label="Client"
android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.lib_name" android:value="client" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
从评论更新
安卓版本 28
golang 版本 go1.14.4 linux/amd64
fyne 版本 fyne.io/fyne v1.3.0
更新 2
向 list 中的应用程序标签添加了以下属性 android:usesCleartextTraffic="true" tools:targetApi="28"导致 fyne package 出现以下错误命令 failed to find table ref by "attr/usesCleartextTraffic" 我在 fyne package 中添加了打印语句命令记录构建环境变量,这就是它们的样子
GOOS=android   
GOARCH=arm
CC={path to}/ndk/21.2.6472646/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi16-clang
CXX={path to}/ndk/21.2.6472646/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi16-clang++
CGO_ENABLED=1
GOARM=7

最佳答案

使用最新版本的 Fyne,我们修复了打包程序和 Android list 的一些问题。默认情况下不启用 Internet 权限,但如果您在存储权限定义下添加它,它现在应该可以工作。
我们正在开发更好的跨平台权限请求代码,应该会在今年晚些时候发布。

关于android - 如何在 android 上为原生 fyne 应用程序发出 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62513662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com