问题描述
解决我忘记了在 buildozer.spec 文件中对 android 的许可
它是用于与机器人进行 UDP 通信的代码的一部分。整个应用程序工作正常,但是当“线程”吃午饭时,我收到此错误:PermissionError: [Errno 13] Permission denied。在笔记本电脑/PC 上也能正常工作。 在电话应用程序上拥有所有权限。如何解决这个问题?
in Communication_UDP_ESP
12-22 16:14:01.853 2727 4393 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Lib/socket.py",line 231,in __init__
12-22 16:14:01.854 2727 4393 I python : PermissionError: [Errno 13] Permission denied
12-22 16:14:02.592 2727 4396 I python : Exception in thread Thread-32:
12-22 16:14:02.593 2727 4396 I python : Traceback (most recent call last):
12-22 16:14:02.593 2727 4396 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Lib/threading.py",line 932,in _bootstrap_inner
12-22 16:14:02.594 2727 4396 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/RoboT/jnius/__init__.py",line 84,in jnius_thread_hook
12-22 16:14:02.595 2727 4396 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Lib/threading.py",line 870,in run
12-22 16:14:02.596 2727 4396 I python : File "/home/ms/RoXv2/.buildozer/android/app/main.py",line 648,in Communication_UDP_ESP
12-22 16:14:02.596 2727 4396 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Lib/socket.py",in __init__
12-22 16:14:02.597 2727 4396 I python : PermissionError: [Errno 13] Permission denied
12-22 16:20:09.556 2727 4597 I python : Exception in thread Thread-34:
12-22 16:20:09.557 2727 4597 I python : Traceback (most recent call last):
12-22 16:20:09.557 2727 4597 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Lib/threading.py",in _bootstrap_inner
12-22 16:20:09.558 2727 4597 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/RoboT/jnius/__init__.py",in jnius_thread_hook
12-22 16:20:09.561 2727 4597 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Lib/threading.py",in run
12-22 16:20:09.562 2727 4597 I python : File "/home/ms/RoXv2/.buildozer/android/app/main.py",in Communication_UDP_ESP
12-22 16:20:09.563 2727 4597 I python : File "/home/ms/RoXv2/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/python3/armeabi-v7a__ndk_target_21/python3/Lib/socket.py",in __init__
12-22 16:20:09.563 2727 4597 I python : PermissionError: [Errno 13] Permission denied
负责UDP通信的部分应用
def do_something(self):
global StopRunUDP,OnceRunUDP
#print(StopRunUDP)
if not OnceRunUDP:
StopRunUDP = True
OnceRunUDP = True
# print('after IF')
#print(StopRunUDP)
# create the thread to invoke other_func with arguments (2,5)
t1 = Thread(target=self.Communication_UDP_ESP)
# set daemon to true so the thread dies when app is closed
t1.daemon = True # Jesli True -> background worker,if false
# start the thread
t1.start()
def Stop_UDP(self): # Z niewiadomych przyczyn nie uruchamia sie ...
global StopRunUDP,OnceRunUDP # próba przynajmniej zkończenia watku other_func
#print(StopRunUDP)
StopRunUDP = False
OnceRunUDP = False
#print('after StopUDP')
#print(StopRunUDP)
def Communication_UDP_ESP(self):
global StopRunUDP,OnceRunUDP
global Data1,DataToSend,UDP_IP,UDP_PORT
global AccelX,AccelY,AccelZ,GyroX,GyroY,GyroZ,Battery,Temp
# Internet # UDP
sock = socket.socket(socket.AF_INET,socket.soCK_DGRAM) # Tworzenie / podlączenie socketa
sock.sendto(MESSAGE,(UDP_IP,UDP_PORT))
sock.settimeout(0.3) # najwyrażnej rozwiązło problem,(socket.setblocking)
# jesli false to nie mrozi progrmu w oczekiwaniu na dane jesli true,mrozi
#lost = 1
def Save_Data_From_ESP(Data):
... only caluculate data
while StopRunUDP:
# lost = lost+1 # for tests
# print(lost)
# if lost >90000 :
# lost = 0
mili_Start = time.time()
try:
Data,addr = sock.recvfrom(16) # buffer size is 15 bytes
except:
print("error")
try:
if len(Data) > 0: # jesli bufor wiekszy od zera ( linijak wyżej,albo bedzie,albo bedzie zero ....)
Save_Data_From_ESP(Data)
# print(Data)
# print("received message: %s" % Data) # wypisz dane
Data = [] # zerowanie buforu,ale chyba niekonieczne
sock.sendto(DataToSend,UDP_PORT)) # wysłanie wiadomości zwrotnej
except:
print("erno2")
mili_Stop = time.time()
TimeOut = mili_Stop - mili_Start
#print(TimeOut)
if TimeOut > 0.2 :
print("Coś poszło nie tak,sprawdź połączenie")
sock.sendto(DataToSend,UDP_PORT)) # wysłanie wiadomości zwrotnej
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)