【发布时间】:2019-11-27 10:10:18
【问题描述】:
我有两个脚本,服务器在我的电脑上运行,如果它建立连接,我的电脑就会关闭。客户端脚本在我的 Android 手机上,理论上它可以连接到我的电脑。
使用 Ubuntu 上的 Buildozer,我制作了一个 apk 文件,如果我在手机上运行它,则什么也不会发生。但是,如果我从手机上的浏览器连接到服务器,它就可以工作了。如果我从那里运行脚本,它也可以从适用于 Android 的 Python IDE (QPython3) 运行。
client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
HOST = "192.168.0.103"
PORT = 5000
s.connect((HOST, PORT))
我已经用 Android Studio 测试了这个 apk,它抛出了这个错误:
Traceback (most recent call last):
File "/home/admin1/ComputerOff/.buildozer/android/app/main.py", line 3, in <module>
File "/home/admin1/ComputerOff/.buildozer/android/platform/build/build/other_builds/python3-libffi-openssl-sqlite3/armeabi-v7a__ndk_target_21/python3/Lib/socket.py", line 151, in __init__
PermissionError: [Errno 13] Permission denied
我在互联网上查找了这个错误,我只发现超过 1024 的端口可以用于此目的,但我已经有更高的端口,所以它没有多大帮助。 我希望有人可以提供帮助。
【问题讨论】:
-
应用的清单必须声明需要互联网访问权限。
-
在 buildozer.spec 文件中添加:# (list) Permissions android.permissions = INTERNET
-
@Forzor 我实际上将此权限标志添加到 android.permissions 并且它不起作用:(您是否建议任何其他解决方案或标志类型?
标签: python android python-3.x sockets buildozer