我正在为Android做一个扫描Wi-Fi网络的应用程序,我已经发现了如何在Android中使用pyjnius来扫描Wi-Fi网络,但我仍然不知道如何使用pyjnius连接Wi-Fi网络,我已经看到了如何在kotlin中做到这一点,我也尝试过用pyjnius做同样的事情,但它对我不起作用,这是我的代码
def conect(self):
Contexto = autoclass('android.content.Context')
ConnectivityManager = autoclass('android.net.ConnectivityManager')
WifiConfiguration = autoclass('android.net.wifi.WifiConfiguration')
WifiManager = autoclass('android.net.wifi.WifiManager')
Actividad = autoclass('android.app.Activity')
PythonActivity = autoclass('org.renpy.android.PythonActivity')
activity = PythonActivity.mActivity
service = activity.getSystemService(Contexto.WIFI_SERVICE)
#String = jnius.autoclass("java.lang.String")
WifiConfiguration.SSID ="TURBONETT_295786"
WifiConfiguration.preSharedKey = "KMgApsqz"
p = service.addNetwork(WifiConfiguration)
#service.getConfiguredNetworks()
service.disconnect()
service.enableNetwork(p, True)
#service.startScan()
service.reconnect() 当我运行这个函数时,我得到了这个错误
jnius.jnius.JavaException: JVM exception occurred: Illegal reason value: 6619241如果有人能告诉我我做得不对,我会非常感激的,谢谢。
发布于 2021-01-01 00:50:17
我已经设法让它工作了,这是一个如何用kivy和Pyjnius连接到Wifi网络的小例子,我希望它能帮助一些人,欢迎你。
import kivy
from jnius import autoclass
from kivymd.app import MDApp
from kivy.lang.builder import Builder
import kivymd
from kivymd.uix.button import MDRoundFlatButton
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.toast import toast
String = autoclass('java.lang.String')
WifiConfigure = autoclass('android.net.wifi.WifiConfiguration')
PythonActivity = autoclass('org.kivy.android.PythonActivity')
activity = PythonActivity.mActivity
service = activity.getSystemService("wifi")
WifiManager = autoclass('android.net.wifi.WifiManager')
#The WifiManager methods are static which means that you do not have to instantiate the class
WifiConfig = WifiConfigure()
#Instant the class since its methods are public and not static
Builder.load_string('''
<Principal>:
MDRoundFlatButton:
text: 'Conectar'
pos_hint: {"center_x": .5, "center_y": .64}
on_press:
root.Conectar()
MDCard:
id: dos
elevation: 0
padding: '0dp'
size_hint: .95, .07
pos_hint: {"center_x": .5, "center_y": .85}
border_radius: 20
radius: [10]
TextInput:
id: t1
text: ''
hint_text: 'Nombre de la Red'
pos_hint: {"center_x": .55, "center_y": .84}
size_hint: .7, .05
text_color: 1, 1, 1, 1
multiline: False
background_color: 0,0,0,0
foreground_color: 1,1,1,1
MDCard:
id: dos
elevation: 0
padding: '0dp'
size_hint: .95, .07
pos_hint: {"center_x": .5, "center_y": .75}
border_radius: 20
radius: [10]
TextInput:
id: t2
text: ''
hint_text: 'Contraseña'
pos_hint: {"center_x": .55, "center_y": .74}
size_hint: .7, .05
text_color: 1, 1, 1, 1
multiline: False
background_color: 0,0,0,0
foreground_color: 1,1,1,1
''')
class Principal(Screen):
def __init__(self, **kwargs):
super(Principal, self).__init__(**kwargs)
def Conectar(self):
toast("Conectando...")
Connectname = String(self.ids.t1.text)
connectkey = String(self.ids.t2.text)
WifiConfig.SSID = "\""+Connectname.toString()+"\""
WifiConfig.preSharedKey ="\""+ connectkey.toString()+"\""
added = WifiManager.addNetwork(WifiConfig)
WifiManager.enableNetwork(added, True)
class Inicia (MDApp):
def build(self):
self.theme_cls.theme_style = 'Dark'
hijo = ScreenManager()
princ = Principal(name="principal")
hijo.add_widget(princ)
return hijo
Inicia().run() Made in Pydroid3
https://stackoverflow.com/questions/65357795
复制相似问题