Перейти к содержанию
Fire Monkey от А до Я
  • 0

Открытие окна настроек Wi-Fi, Способ определения координат


Pax Beach

Вопрос

Коллеги, подскажите пожалуйста, как в Delphi из своего приложения перейти к настройкам устройства Android, в частности Wi-Fi и GPS?

По нажатию кнопки пытаюсь выполнить такой код (нашел по теме на просторах), ничего не происходит ни в отладчике ни на экране. А, по идее, должна открыться Activity «Способ определения координат».

var
  Intent: JIntent;
  WiFIServiceNative: JWifiManager;
begin
  Intent := TJIntent.Create;
  Intent.setClassName(StringToJString('com.android.settings'),
    StringToJString('com.android.settings.widget.SettingsAppWidgetProvider'));
  Intent.addCategory(TJIntent.JavaClass.CATEGORY_ALTERNATIVE);
  Intent.setData(StrToJURI('3'));
  TAndroidHelper.Activity.sendBroadcast(Intent);
...

Вот еще, здесь же пытаюсь программно выключить Wi-Fi — приложение вылетает с ошибкой «...class segmentation fault (11).», в отладчике методы Wi-Fi менеджера выполняются бесконечное количество раз, пока не вылетает указанная ошибка, т.е. нажатие F8 возвращает обратно на ту же строчку выполнения метода.

  WiFIServiceNative := JWifiManager(TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  if Assigned(WiFIServiceNative) then begin
    memo1.Lines.Add('Has Wifi manager');

    memo1.Lines.Add('Wifi state: ' + IntToStr(WiFIServiceNative.getWifiState));

    memo1.Lines.Add('Try to Wi-Fi off:');
    if WiFIServiceNative.setWifiEnabled(false) then
      memo1.Lines.Add(' - OK')
    else
      memo1.Lines.Add(' - FAIL');

 

Прошу вашей помощи — как правильно работать с настройками Android?

 

Приложение пустое — кнопка и мемо.

Permissions для проекта такие:

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

 

Изменено пользователем Pax Beach
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы
32 минуты назад, Pax Beach сказал:

Коллеги, подскажите пожалуйста, как в Delphi из своего приложения перейти к настройкам устройства Android, в частности Wi-Fi и GPS?

 

 

Ссылка на комментарий
  • 0
4 часа назад, Rusland сказал:

Этот способ открывает форму настроек «Местоположение». Уже не плохо, спасибо!

Но я искал, как перейти сразу в окно «Способ определения координат». Не уверен, правда, что это возможно.

Изменено пользователем Pax Beach
Ссылка на комментарий
  • 0
  • Модераторы

Выключить WiFi:

uses
  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Net.Wifi;

procedure TForm1.Button1Click(Sender: TObject);
var
  WiFIServiceNative: JWifiManager;
begin
  WiFIServiceNative := TJWifiManager.Wrap
    (TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  WiFIServiceNative.setWifiEnabled(false);
end;

 

Ссылка на комментарий
  • 0
2 часа назад, Andrey Efimov сказал:

Выключить WiFi:


uses
  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Net.Wifi;

procedure TForm1.Button1Click(Sender: TObject);
var
  WiFIServiceNative: JWifiManager;
begin
  WiFIServiceNative := TJWifiManager.Wrap
    (TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  WiFIServiceNative.setWifiEnabled(false);
end;

 

Большое спасибо. Это решает проблему включения/выключения Wi-Fi.

 

Ссылка на комментарий
  • 0

Сделал пример в одном проекте включения/выключения Wi-Fi, переход к настройкам местоположения и опрос статуса датчика location.

Качайте, кому нужно.

 

TestWifi.zip

Ссылка на комментарий
  • 0
Только что, I PL сказал:

Приветствую, а есть способ запускать точку доступа? Без вызова окна настроек.

Наверняка.

Надо читать на портале разработчиков

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...