Delphi Android nastavení Wifi

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod sw4all 17. 1. 2018 23:24

Ahoj,
doučuji se programování aplikací pro Android v prostředí Delphi.
V současné době jsem si vzal trochu velké sousto a potřeboval bych pomoci v opravě kódu.

Mám několik zařízení které si stáhnou ze serveru seznam Wifi sítí včetně SSID a hesla.

V androidu spustím aplikaci a ta si seznam stáhne a uloží do interní databáze.

Nyní se vypíše seznam do ListView. Kliknutím se načtou všechny data z databáze do proměnných.

Ze zařízení se odstraní všechny uložené připojení. (až sem mi vše funguje na mobilu, na tabletu už ne).

Předem díky za pomoc.

Kód:
Kód: Vybrat vše
var
  aSSID, aPass: string;

procedure TfrmApp.RemoveWifiList;  // nefunguje na tabletu, mobil OK
var
  WifiManagerObj: JObject;
  WifiManager: JWifiManager;
  ScanResult: JScanResult;
  i: Integer;
begin
  WifiManagerObj := SharedActivityContext.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
  WifiManager := TJWifiManager.Wrap((WifiManagerObj as ILocalObject).GetObjectID);

  try
  for i := 0 to WifiManager.getScanResults.size -1 do
  begin
    ScanResult := TJScanResult.Wrap((WifiManager.getScanResults.get(i) as ILocalObject).GetObjectID);
    WifiManager.removeNetwork(i);
    WifiManager.saveConfiguration();
  end;
  finally
    ConnectToWifi;
  end;
end;

procedure TfrmApp.ConnectToWifi;  // nefunguje
var
  WifiManagerObj: JObject;
  WifiManager: JWifiManager;
  WifiConfiguration: JWifiConfiguration;
begin
  aSSID := qDB.FieldByName('aSSID').AsString;
  aPass := qDB.FieldByname('aPass').AsString;
 
  WifiManagerObj := SharedActivityContext.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
  WifiManager := TJWifiManager.Wrap((WifiManagerObj as ILocalObject).GetObjectID);

  WifiConfiguration.SSID := StringToJString(aSSID);
  WifiConfiguration.preSharedKey := StringToJString(aPass);
  WifiConfiguration.hiddenSSID := False;

  WifiManager.disconnect;
  try
    WifiManager.addNetwork(WifiConfiguration);
    WifiManager.saveConfiguration;
    WifiManager.reconnect;
  except
    WifiManager.updateNetwork(WifiConfiguration);
    WifiManager.saveConfiguration;
    WifiManager.reconnect;
  end;
end;
     
sw4all
Kolemjdoucí

Odeslat příspěvekod JanFiala 19. 1. 2018 06:08

Právo aplikace pro správu sítí má, aby mohla odstraňovat a přidávat sítě?
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod sw4all 19. 1. 2018 08:02

Ano, mám.
Vše co se týče sítí i uživatelských nastavení.
sw4all
Kolemjdoucí

Odeslat příspěvekod suk 19. 1. 2018 11:21

Zapomnel jsi napsat asi tisic veci:
- co je "tablet" a co je "mobil" - zarizeni, verze Androidu, zdali je to rootly (tyhle veci, jestli se nepletu, funguji jenom pro "systemove aplikace" - respektive, v nejake verzi tomu tak bylo)
- jak se to chova? Dostanes exception? Projde to jakoby to bylo v poradku?
- nejaky vypis z ADB?
Pokud nesouhlasíte s mým názorem, popřemýšlejte sami nad sebou. Opravdu si myslíte, že já bych se mohl mýlit?
----
You are an inspiration for a birth control...
suk
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod sw4all 19. 1. 2018 12:12

Potřebuji vyřešit nejdříve smazání seznamu wifi.

Mobil: android 4. - 7. odstraní seznam wifi v pořádku
Tablet: android 4. - 6. odstraní seznam wifi v pořádku
Tablet: android 7. bez chyb ale neodstraní seznam wifi (multiuživatelský)

Dle API google není potřeba zvýšená oprávnění, pouze se nastaví v IDE permission.
U multiuživatelských zařízení se odstraní nastavení wifi, bluetooth i mobilního připojení u všech uživatelů s nastavením permission v IDE.
https://developer.android.com/reference ... nager.html

Nejlepší je si to dle napsaného kódu v prvním tématu vyzkoušet.
sw4all
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků