【问题标题】:Python PermissionError: [Errno 13] Permission denied using SocketPython PermissionError: [Errno 13] Permission denied using Socket
【发布时间】: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


【解决方案1】:

您需要在清单中添加网络权限 添加这个:

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

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 2019-07-31
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2018-08-18
    相关资源
    最近更新 更多