Произошло исключение JVM: Требуется разрешение Bluetooth: Ни у одного пользователя 10258 нет текущего процесса android .permission.Bluetooth python jnius? - PullRequest
1 голос
/ 22 января 2020

Я хочу создать приложение Bluetooth, у меня есть файл .apk с этим кодом:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from jnius import autoclass
from kivy.uix.label import Label


def get_socket_stream(name):
    paired_devices = BluetoothAdapter.getDefaultAdapter().getBondedDevices().toArray()
    socket = None
    for device in paired_devices:
        if device.getName() == name:
            socket = device.createRfcommSocketToServiceRecord(
                UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"))
            recv_stream = socket.getInputStream()
            send_stream = socket.getOutputStream()
            break
    socket.connect()
    return recv_stream, send_stream


class Bluetooth():
    def __init__(nameOfDevice):
        self.recv_stream, self.send_stream = get_socket_stream(nameOfDevice)

    def send(self, cmd):
        self.send_stream.write('{}\n'.format(cmd))
        self.send_stream.flush()

class ExampleApp(App):
    def build(self):
        global BluetoothAdapter, BluetoothDevice, BluetoothSocket, UUID
        self.fl = FloatLayout()
        try:
            BluetoothAdapter = autoclass('android.bluetooth.BluetoothAdapter')
            BluetoothDevice = autoclass('android.bluetooth.BluetoothDevice')
            BluetoothSocket = autoclass('android.bluetooth.BluetoothSocket')
            UUID = autoclass('java.util.UUID')
            get_socket_stream('DESKTOP-I2CNCPQ')
            self.fl.add_widget(Label(text='no errors', pos=(0, 0), font_size=(40)))
       except Exception as error:
           self.fl.add_widget(Label(text=str(error), pos=(0, 0), font_size=(20)))
       return self.fl

if __name__ == '__main__':
    ExampleApp().run()

И я получаю сообщение об ошибке:

JVM exception occured:Need Bluetooth permission: Neither user 10258 not current process has android.permission.Bluetooth

Как это исправить? Я не нашел ответа как это исправить в python, надеюсь, вы мне поможете ............................. ................................

1 Ответ

1 голос
/ 22 января 2020

Если у вас отсутствуют разрешения, вы должны добавить их в файл .p4a или через командную строку

--permission BLUETOOTH

. Вероятно, вам нужно также

--permission BLUETOOTH_ADMIN

.

Если вы используете buildozer, вы должны добавить

 android.permissions = BLUETOOTH_ADMIN,BLUETOOTH

в buildozer.spe c

...