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

Андроид, WebBrowser, Geolocation - запрос разрешения на геолокацию


Евгений Корепов

Вопрос

Простое приложение для андроид - форма, на ней TWebBrowser. В WebBrowser открываем что то требующее разрешение на геолокацию. У примеру https://www.openstreetmap.org 

В обычном браузере, при тыке на "Показать мое местоположение" появится popup окно с запросом разрешения на "Доступ к данным о вашем местоположении".

Но в Delphi приложении описанном выше никакого запроса не приходит. ?

Нашел решение для java https://forums.fusetools.com/t/geolocation-not-enabled-in-webview-on-android/1374 

В функцию создания WebView 

    public static Object CreateWebView321(final boolean zoomEnabled,final boolean scrollEnabled)
    {
        ScrollableWebView wv = new ScrollableWebView(com.fuse.Activity.getRootActivity());
        wv.getSettings().setJavaScriptEnabled(true);
        wv.getSettings().setUseWideViewPort(true); //enabled viewport meta tag
        wv.getSettings().setLoadWithOverviewMode(true); //mimic iOS Safari and Android Chrome
        wv.getSettings().setSupportZoom(zoomEnabled);
        wv.getSettings().setBuiltInZoomControls(zoomEnabled);
        wv.getSettings().setDomStorageEnabled(true);
        wv.setAllowScroll(scrollEnabled);
        
        return wv;
    }

рекомендуется добавить следующий код

       wv.getSettings().setGeolocationEnabled(true);
       wv.setWebChromeClient(new WebChromeClient(){
            @Override public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
                callback.invoke(origin, true, false);
            }
        });

В модуле FMX.WebBrowser.Android.pas это выглядит так

constructor TAndroidWebBrowserService.Create;
var
  LayoutParams: JRelativeLayout_LayoutParams;
begin
  FWebView := TJWebBrowser.JavaClass.init(TAndroidHelper.Activity);
  FWebView.getSettings.setJavaScriptEnabled(True);
  FListener := TWebBrowserListener.Create(Self);
  FWebView.SetWebViewListener(FListener);
  FFocusChangeListener := TFocusChangeListener.Create(Self);
  FWebView.setOnFocusChangeListener(FFocusChangeListener);
  FWebView.getSettings.setGeolocationEnabled(True);
  FWebView.getSettings.setAppCacheEnabled(True);
  FWebView.getSettings.setDatabaseEnabled(True);
  FWebView.getSettings.setDomStorageEnabled(True);
  FWebView.getSettings.setBuiltInZoomControls(True);
  FWebView.getSettings.setDisplayZoomControls(False);

  FWebViewContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context);
  FChildrenContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context);
  LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT);
  FWebViewContainer.addView(FWebView, LayoutParams);
  LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT);
  FWebViewContainer.addView(FChildrenContainer, LayoutParams);
 
  SetEnableCaching(True);
end;

Вот суть вопроса - добавить delphi код. Пробую что то вот такое, но закончить ума не хватает

constructor TAndroidWebBrowserService.Create;
var
  LayoutParams: JRelativeLayout_LayoutParams;
begin
  FWebView := TJWebBrowser.JavaClass.init(TAndroidHelper.Activity);
  FWebView.getSettings.setJavaScriptEnabled(True);
  FListener := TWebBrowserListener.Create(Self);
  FWebView.SetWebViewListener(FListener);
  FFocusChangeListener := TFocusChangeListener.Create(Self);
  FWebView.setOnFocusChangeListener(FFocusChangeListener);
  FWebView.getSettings.setGeolocationEnabled(True);

  FWebView.setWebChromeClient(
    TJWebChromeClient.Create.onGeolocationPermissionsShowPrompt(
        origin: JString; callback: JGeolocationPermissions_Callback);.....

  FWebView.getSettings.setAppCacheEnabled(True);
  FWebView.getSettings.setDatabaseEnabled(True);
  FWebView.getSettings.setDomStorageEnabled(True);
  FWebView.getSettings.setBuiltInZoomControls(True);
  FWebView.getSettings.setDisplayZoomControls(False);

  FWebViewContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context);
  FChildrenContainer := TJRelativeLayout.JavaClass.init(TAndroidHelper.Context);
  LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT);
  FWebViewContainer.addView(FWebView, LayoutParams);
  LayoutParams := TJRelativeLayout_LayoutParams.JavaClass.init(TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT, TJViewGroup_LayoutParams.JavaClass.MATCH_PARENT);
  FWebViewContainer.addView(FChildrenContainer, LayoutParams);

  SetEnableCaching(True);
end;

 

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

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

  • 1

Расписывать в деталях прям не буду
https://gist.github.com/ashumkin/3e2e213d657162ae26d364a85c64b472

 

Изменено пользователем Alexey Shumkin
добавлена гиперссылка
Ссылка на комментарий
  • 0
8 минут назад, Alexey Shumkin сказал:

Расписывать в деталях прям не буду
https://gist.github.com/ashumkin/3e2e213d657162ae26d364a85c64b472

 

Алексей, блестяще!!! Спасибо!

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

Только с fmx.jar-rebuild.cmd явно что то не так. 

Смущает конструкция

PATH %JAVA_HOME%\bin\;%PATH% & javac com\embarcadero\firemonkey\webbrowser\*.java  -cp "%SDK%\android-sdk-windows\platforms\android-26\android.jar"

Она ожидаемо выдает в консоль кучу мусора и результат

javac: file not found: com\embarcadero\firemonkey\webbrowser\*.java
Usage: javac <options> <source files>
use -help for a list of possible options

C:\Users\ekore>rem copy "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar" "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar.bak"

C:\Users\ekore>jar -vuf "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar" com\embarcadero\firemonkey\webbrowser\OnWebViewListener.class com\embarcadero\firemonkey\webbrowser\WebBrowser.class com\embarcadero\firemonkey\webbrowser\WebBrowser$1.class com\embarcadero\firemonkey\webbrowser\WebClient.class
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.class : no such file or directory
com\embarcadero\firemonkey\webbrowser\WebBrowser.class : no such file or directory
com\embarcadero\firemonkey\webbrowser\WebBrowser$1.class : no such file or directory
com\embarcadero\firemonkey\webbrowser\WebClient.class : no such file or directory

 

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

читал её текст?
а коли приводишь лог вызова, весь приводи

но подозреваю, что тебе надо задать set BDS=
в правильное значение (у меня 32-битная ОС, у тебя наверняка 64-битная, и путь к Делфи отличается от твоего)

Изменено пользователем Alexey Shumkin
Ссылка на комментарий
  • 0

Хм, и никакого fmx-dexed-.jar в либах у меня не наблюдается, есть fmx.dex.jar.

Странно что при куче ошибок что даже создалось в fmx.jar. Но проблему не решило.

image.thumb.png.6ba76e5eeeee112791ac868a46f118ce.png

 

Ссылка на комментарий
  • 0
9 минут назад, Alexey Shumkin сказал:

читал её текст?
а коли приводишь лог вызова, весь приводи

но подозреваю, что тебе надо задать set BDS=
в правильное значение (у меня 32-битная ОС, у тебя наверняка 64-битная, и путь к Делфи отличается от твоего)

Вот батник:

set JAVA_HOME=C:\Program Files\Java\jre1.8.0_121
set SDK=C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms

if "x%BDS%" == "x" set BDS=D:\Embarcadero\Studio\20.0

cd %BDS%\source\rtl\androiddex\java\fmx\src

PATH %JAVA_HOME%\bin\;%PATH% & javac com\embarcadero\firemonkey\webbrowser\*.java  -cp "%SDK%\android-sdk-windows\platforms\android-26\android.jar"

rem copy "%BDS%\lib\android\debug\fmx.jar" "%BDS%\lib\android\debug\fmx.jar.bak"
jar -vuf "%BDS%\lib\android\debug\fmx.jar" com\embarcadero\firemonkey\webbrowser\OnWebViewListener.class com\embarcadero\firemonkey\webbrowser\WebBrowser.class com\embarcadero\firemonkey\webbrowser\WebBrowser$1.class com\embarcadero\firemonkey\webbrowser\WebClient.class

Вот результат его работы

D:\>D:\Embarcadero\fmx.jar-rebuild.cmd

D:\>set JAVA_HOME=C:\Program Files\Java\jre1.8.0_121

D:\>set SDK=C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms

D:\>if "xD:\Embarcadero\Studio\20.0" == "x" set BDS=D:\Embarcadero\Studio\20.0

D:\>cd D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>PATH C:\Program Files\Java\jre1.8.0_121\bin\;C:\Program Files\Java\jre1.8.0_121\bin\;C:\Program Files\Java\jre1.8.0_121\bin\;C:\Program Files\Java\jre1.8.0_121\bin\;d:\Embarcadero\Studio\20.0\bin;d:\Embarcadero\Studio\20.0\bin64;D:\Embarcadero\Studio\20.0\bin;C:\Users\Public\Document
s\Embarcadero\Studio\20.0\Bpl;D:\Embarcadero\Studio\20.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Win64;C:\Program Files\Microsoft MPI\Bin\;C:\ProgramData\Oracle\Java\javapath;D:\PlatformSDKs\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\Java\jdk1.7.0_71\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\W
bem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\OpenSSL-Win32\bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\OpenVPN\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\PHP\;C:\ProgramData\ComposerSetup\bin;C:\ProgramData\Compose
rSetup\bin;C:\Users\ekore\AppData\Local\Microsoft\WindowsApps;C:\Users\ekore\AppData\Local\GitHubDesktop\bin;C:\Users\ekore\AppData\Local\Microsoft\WindowsApps;C:\PHP\;C:\Users\ekore\AppData\Roaming\Composer\vendor\bin;C:\ProgramData\ComposerSetup\bin;      & javac com\embarcadero\firemonkey\webbrowser\*.java  -cp "C:\Users\Public\Documents\Emb
arcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-sdk-windows\platforms\android-26\android.jar"
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:3: error: package android.graphics does not exist
import android.graphics.Bitmap;
                       ^
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:4: error: package android.net.http does not exist
import android.net.http.SslError;
                       ^
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:5: error: package android.os does not exist
import android.os.Message;
                 ^
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:6: error: package android.view does not exist
import android.view.KeyEvent;
                   ^
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:7: error: package android.webkit does not exist
import android.webkit.HttpAuthHandler;
                     ^
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:8: error: package android.webkit does not exist
import android.webkit.SslErrorHandler;
                     ^
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:9: error: package android.webkit does not exist
import android.webkit.WebView;
                     ^
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:12: error: cannot find symbol
        public void doUpdateVisitedHistory(WebView view, String url,
                                           ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:15: error: cannot find symbol
        public void onFormResubmission(WebView view, Message dontResend,
                                       ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:15: error: cannot find symbol
        public void onFormResubmission(WebView view, Message dontResend,
                                                     ^
  symbol:   class Message
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:16: error: cannot find symbol
                        Message resend);
                        ^
  symbol:   class Message
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:18: error: cannot find symbol
        public void onLoadResource(WebView view, String url);
                                   ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:20: error: cannot find symbol
        public void onPageFinished(WebView view, String url);
                                   ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:22: error: cannot find symbol
        public void onPageStarted(WebView view, String url, Bitmap favicon);
                                  ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:22: error: cannot find symbol
        public void onPageStarted(WebView view, String url, Bitmap favicon);
                                                            ^
  symbol:   class Bitmap
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:24: error: cannot find symbol
        public void onReceivedError(WebView view, int errorCode,
                                    ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:27: error: cannot find symbol
        public void onReceivedHttpAuthRequest(WebView view,
                                              ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:28: error: cannot find symbol
                        HttpAuthHandler handler, String host, String realm);
                        ^
  symbol:   class HttpAuthHandler
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:30: error: cannot find symbol
        public void onReceivedSslError(WebView view, SslErrorHandler handler,
                                       ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:30: error: cannot find symbol
        public void onReceivedSslError(WebView view, SslErrorHandler handler,
                                                     ^
  symbol:   class SslErrorHandler
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:31: error: cannot find symbol
                        SslError error);
                        ^
  symbol:   class SslError
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:33: error: cannot find symbol
        public void onScaleChanged(WebView view, float oldScale, float newScale);
                                   ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:35: error: cannot find symbol
        public void onUnhandledKeyEvent(WebView view, KeyEvent event);
                                        ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:35: error: cannot find symbol
        public void onUnhandledKeyEvent(WebView view, KeyEvent event);
                                                      ^
  symbol:   class KeyEvent
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:37: error: cannot find symbol
        public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event);
                                              ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:37: error: cannot find symbol
        public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event);
                                                            ^
  symbol:   class KeyEvent
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:39: error: cannot find symbol
        public boolean shouldOverrideUrlLoading(WebView view, String url);
                                                ^
  symbol:   class WebView
  location: interface OnWebViewListener
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:3: error: package android.content does not exist
import android.content.Context;
                      ^
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:4: error: package android.webkit does not exist
import android.webkit.WebChromeClient;
                     ^
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:5: error: package android.webkit does not exist
import android.webkit.WebView;
                     ^
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:6: error: package android.webkit.GeolocationPermissions does not exist
import android.webkit.GeolocationPermissions.Callback;
                                            ^
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:8: error: cannot find symbol
public class WebBrowser extends WebView {
                                ^
  symbol: class WebView
com\embarcadero\firemonkey\webbrowser\WebClient.java:3: error: package android.graphics does not exist
import android.graphics.Bitmap;
                       ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:4: error: package android.net.http does not exist
import android.net.http.SslError;
                       ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:5: error: package android.os does not exist
import android.os.Message;
                 ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:6: error: package android.view does not exist
import android.view.KeyEvent;
                   ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:7: error: package android.webkit does not exist
import android.webkit.HttpAuthHandler;
                     ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:8: error: package android.webkit does not exist
import android.webkit.SslErrorHandler;
                     ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:9: error: package android.webkit does not exist
import android.webkit.WebView;
                     ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:10: error: package android.webkit does not exist
import android.webkit.WebViewClient;
                     ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:12: error: cannot find symbol
public class WebClient extends WebViewClient {
                               ^
  symbol: class WebViewClient
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:11: error: cannot find symbol
        private WebChromeClient mWebChromeClient;
                ^
  symbol:   class WebChromeClient
  location: class WebBrowser
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:22: error: cannot find symbol
        public WebBrowser(Context context) {
                          ^
  symbol:   class Context
  location: class WebBrowser
com\embarcadero\firemonkey\webbrowser\WebClient.java:21: error: cannot find symbol
        public void doUpdateVisitedHistory(WebView view, String url,
                                           ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:30: error: cannot find symbol
        public void onFormResubmission(WebView view, Message dontResend,
                                       ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:30: error: cannot find symbol
        public void onFormResubmission(WebView view, Message dontResend,
                                                     ^
  symbol:   class Message
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:31: error: cannot find symbol
                        Message resend) {
                        ^
  symbol:   class Message
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:39: error: cannot find symbol
        public void onLoadResource(WebView view, String url) {
                                   ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:47: error: cannot find symbol
        public void onPageFinished(WebView view, String url) {
                                   ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:55: error: cannot find symbol
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
                                  ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:55: error: cannot find symbol
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
                                                            ^
  symbol:   class Bitmap
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:63: error: cannot find symbol
        public void onReceivedError(WebView view, int errorCode,
                                    ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:72: error: cannot find symbol
        public void onReceivedHttpAuthRequest(WebView view,
                                              ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:73: error: cannot find symbol
                        HttpAuthHandler handler, String host, String realm) {
                        ^
  symbol:   class HttpAuthHandler
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:81: error: cannot find symbol
        public void onReceivedSslError(WebView view, SslErrorHandler handler,
                                       ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:81: error: cannot find symbol
        public void onReceivedSslError(WebView view, SslErrorHandler handler,
                                                     ^
  symbol:   class SslErrorHandler
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:82: error: cannot find symbol
                        SslError error) {
                        ^
  symbol:   class SslError
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:90: error: cannot find symbol
        public void onScaleChanged(WebView view, float oldScale, float newScale) {
                                   ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:98: error: cannot find symbol
        public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
                                        ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:98: error: cannot find symbol
        public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
                                                      ^
  symbol:   class KeyEvent
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:106: error: cannot find symbol
        public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
                                              ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:106: error: cannot find symbol
        public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
                                                            ^
  symbol:   class KeyEvent
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:114: error: cannot find symbol
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                                                ^
  symbol:   class WebView
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:25: error: cannot find symbol
                this.setWebViewClient(mWebClient);
                    ^
  symbol: method setWebViewClient(WebClient)
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:26: error: cannot find symbol
                mWebChromeClient = new WebChromeClient() {
                                       ^
  symbol:   class WebChromeClient
  location: class WebBrowser
com\embarcadero\firemonkey\webbrowser\WebBrowser.java:33: error: cannot find symbol
                this.setFocusable(true);
                    ^
  symbol: method setFocusable(boolean)
com\embarcadero\firemonkey\webbrowser\WebClient.java:23: error: cannot find symbol
                super.doUpdateVisitedHistory(view, url, isReload);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:20: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:32: error: cannot find symbol
                super.onFormResubmission(view, dontResend, resend);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:29: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:40: error: cannot find symbol
                super.onLoadResource(view, url);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:38: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:48: error: cannot find symbol
                super.onPageFinished(view, url);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:46: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:56: error: cannot find symbol
                super.onPageStarted(view, url, favicon);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:54: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:65: error: cannot find symbol
                super.onReceivedError(view, errorCode, description, failingUrl);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:62: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:74: error: cannot find symbol
                super.onReceivedHttpAuthRequest(view, handler, host, realm);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:71: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:83: error: cannot find symbol
                super.onReceivedSslError(view, handler, error);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:80: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:91: error: cannot find symbol
                super.onScaleChanged(view, oldScale, newScale);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:89: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:99: error: cannot find symbol
                super.onUnhandledKeyEvent(view, event);
                ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:97: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:110: error: cannot find symbol
                return super.shouldOverrideKeyEvent(view, event);
                       ^
  symbol:   variable super
  location: class WebClient
com\embarcadero\firemonkey\webbrowser\WebClient.java:105: error: method does not override or implement a method from a supertype
        @Override
        ^
com\embarcadero\firemonkey\webbrowser\WebClient.java:113: error: method does not override or implement a method from a supertype
        @Override
        ^
89 errors

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>rem copy "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar" "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar.bak"

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>jar -vuf "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar" com\embarcadero\firemonkey\webbrowser\OnWebViewListener.class com\embarcadero\firemonkey\webbrowser\WebBrowser.class com\embarcadero\firemonkey\webbrowser\WebBrowser$1.class com\embarcadero\firemonkey\webbrowser\WebClien
t.class
com\embarcadero\firemonkey\webbrowser\OnWebViewListener.class : no such file or directory
com\embarcadero\firemonkey\webbrowser\WebBrowser.class : no such file or directory
com\embarcadero\firemonkey\webbrowser\WebBrowser$1.class : no such file or directory
com\embarcadero\firemonkey\webbrowser\WebClient.class : no such file or directory

 

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

Хм, и никакого fmx-dexed-.jar в либах у меня не наблюдается, есть fmx.dex.jar.

ну тут опечатался

всё вам на блюдечке надо...
 

Цитата

set SDK=C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms

...

.... -cp "%SDK%\android-sdk-windows\platforms\android-26\android.jar"

свяжи воедино

с ошибками вида
 

com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:3: error: package android.graphics does not exist

 

Ссылка на комментарий
  • 0
9 минут назад, Alexey Shumkin сказал:

ну тут опечатался

всё вам на блюдечке надо...
 

свяжи воедино

с ошибками вида
 


com\embarcadero\firemonkey\webbrowser\OnWebViewListener.java:3: error: package android.graphics does not exist

 

Где моё блюдечко!!! И чтоб с голубой каёмочкой!!! ? Просто никогда с этим не связывался, да и времени погружаться в нюансы просто нет ( 

Связал. Мой косяк. Дебильный путь от Эмбы сбил с толку. Вот первый раз решил SDK решил оставить по умолчанию (обычно он у меня в D:\PlatformSDKs) и теперь пожинаю плоды...

Теперь гораздо-гораздо лучше! Куча предупреждений, но кто их читает ? 

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>D:\Embarcadero\fmx.jar-rebuild.cmd

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>set JAVA_HOME=C:\Program Files\Java\jre1.8.0_121

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>set SDK=C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>if "xD:\Embarcadero\Studio\20.0" == "x" set BDS=D:\Embarcadero\Studio\20.0

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>cd D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>PATH C:\Program Files\Java\jre1.8.0_121\bin\;C:\Program Files\Java\jre1.8.0_121\bin\;C:\Program Files\Java\jre1.8.0_121\bin\;C:\Program Files\Java\jre1.8.0_121\bin\;C:\Program Files\Java\jre1.8.0_121\bin\;d:\Embarcadero\Studio\20.0\bin;d:\Embarcadero\Studio\20.0\bin64;D:\Embarcadero\
Studio\20.0\bin;C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl;D:\Embarcadero\Studio\20.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Win64;C:\Program Files\Microsoft MPI\Bin\;C:\ProgramData\Oracle\Java\javapath;D:\PlatformSDKs\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\Java\jdk1.7.0_71\bin;C:\WINDOWS\s
ystem32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\OpenSSL-Win32\bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\OpenVPN\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\PHP\;C:\ProgramData\
ComposerSetup\bin;C:\ProgramData\ComposerSetup\bin;C:\Users\ekore\AppData\Local\Microsoft\WindowsApps;C:\Users\ekore\AppData\Local\GitHubDesktop\bin;C:\Users\ekore\AppData\Local\Microsoft\WindowsApps;C:\PHP\;C:\Users\ekore\AppData\Roaming\Composer\vendor\bin;C:\ProgramData\ComposerSetup\bin;       & javac com\embarcadero\firemonkey\webbrowser\*
.java  -cp "C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar"
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/graphics/Bitmap.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/net/http/SslError.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/os/Message.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/KeyEvent.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/webkit/HttpAuthHandler.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/webkit/SslErrorHandler.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/webkit/WebView.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/content/Context.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/webkit/WebChromeClient.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/webkit/GeolocationPermissions.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/webkit/GeolocationPermissions$Callback.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewTreeObserver.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewTreeObserver$OnGlobalFocusChangeListener.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewGroup.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewGroup$OnHierarchyChangeListener.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewParent.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewManager.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/View.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/graphics/drawable/Drawable.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/graphics/drawable/Drawable$Callback.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/KeyEvent$Callback.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/os/Parcelable.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/InputEvent.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/accessibility/AccessibilityEventSource.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/widget/AbsoluteLayout.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/webkit/WebViewClient.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewDebug.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewDebug$ExportedProperty.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewDebug$IntToString.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewDebug$FlagToString.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/view/ViewGroupOverlay.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
warning: C:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\AndroidSDK-2525_20.0.33219.4899\platforms\android-26\android.jar(android/util/SparseArray.class): major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
Note: com\embarcadero\firemonkey\webbrowser\WebClient.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
32 warnings

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>rem copy "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar" "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar.bak"

D:\Embarcadero\Studio\20.0\source\rtl\androiddex\java\fmx\src>jar -vuf "D:\Embarcadero\Studio\20.0\lib\android\debug\fmx.jar" com\embarcadero\firemonkey\webbrowser\OnWebViewListener.class com\embarcadero\firemonkey\webbrowser\WebBrowser.class com\embarcadero\firemonkey\webbrowser\WebBrowser$1.class com\embarcadero\firemonkey\webbrowser\WebClien
t.class
adding: com/embarcadero/firemonkey/webbrowser/OnWebViewListener.class(in = 1183) (out= 482)(deflated 59%)
adding: com/embarcadero/firemonkey/webbrowser/WebBrowser.class(in = 1023) (out= 508)(deflated 50%)
adding: com/embarcadero/firemonkey/webbrowser/WebClient.class(in = 2881) (out= 1151)(deflated 60%)
adding: com/embarcadero/firemonkey/webbrowser/WebBrowser$1.class(in = 861) (out= 454)(deflated 47%)

И в конце приз - все заработало! Геолокация в браузере работает. Браузер даже не спросил разрешения на геолокацию - в приложении разрешения есть, и как я понимаю теперь браузер использует разрешения приложения. 

Ссылка на комментарий
  • 0
major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.

это, вроде, убирается  by
 

javac -source 1.7 -target 1.7 ...


похоже, либы в android.jar скомпилены Java 7,  а тут Java 8
 

Ссылка на комментарий
  • 0
27 минут назад, Alexey Shumkin сказал:

major version 52 is newer than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.

это, вроде, убирается  by
 


javac -source 1.7 -target 1.7 ...


похоже, либы в android.jar скомпилены Java 7,  а тут Java 8
 

Бедные программисты java, сколько странных и не очевидных нюансов ((( 

А для release достаточно поменять пути? Никаких дополнительных опций не нужно?

Ссылка на комментарий
  • 0
7 минут назад, Barbanel сказал:

Наглядный пример фразы "Вы прослушали разговор двух бушменских шаманов" )))))

ДА! В конце в концов! Выложите готовое решение! :))

Ссылка на комментарий
  • 0
19 минут назад, #WAMACO сказал:

ДА! В конце в концов! Выложите готовое решение! :))

Полностью готовое и верное решение тут https://gist.github.com/ashumkin/3e2e213d657162ae26d364a85c64b472 

Главное правильно в батнике выставить все пути. 

P.S. Давно бы уже эмба создала систему перекомпиляции прямо в среде, чтоб не мучаться с батниками в винде.

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

если программа работает с геолокацией, то просто при ее запуске сразу запросить доступ не получается? 

я по моему так и делал на андроиде в Андроид Студио, при показе активити с браузером где я точно знал будет использована геолокация, делал запрос на разрешение и все после этого работало. 

Изменено пользователем haword
Ссылка на комментарий
  • 0
Только что, haword сказал:

если программа работает с геолокацией, то просто при ее запуске сразу запросить доступ не получается? 

проблема и условия её возникновения описаны в первом сообщении ))
встроенный браузер не использует разрешения приложения

кстати, тут есть момент:
если мы, например, запретим приложению использовать геолокацию, а браузеру в данном исполнении, получается, безусловно разрешаем )) неувязочка... это надо проверить )))
вероятно, надо сложнее логику делать )

Ссылка на комментарий
  • 0
2 минуты назад, Alexey Shumkin сказал:

если мы, например, запретим приложению использовать геолокацию, а браузеру в данном исполнении, получается, безусловно разрешаем )) неувязочка... это надо проверить )))
вероятно, надо сложнее логику делать )

не проверял как это сделано в fmx, но в андроиде если ты даешь разрешение приложению на доступ к геолокации то браузер уже не спрашивает тебя об этом и ему это разрешено. 

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

не проверял как это сделано в fmx, но в андроиде если ты даешь разрешение приложению на доступ к геолокации то браузер уже не спрашивает тебя об этом и ему это разрешено. 

в исходном сообщении - ссылка, про "андроид"...
так что не только fmx

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

могу выложить здесь свою apk, с программой, сырую и недоделанную, на java, еще не зарелизенную в плеэмаркете, в ней это работает. при показе активити идет запрос, на доступ к геолокации. если его разрешить, то при повторном открытии этой формы в браузере уже будет значок геолокации. в первый раз его нет потому что после запроса разрешения не пересоздается я так понимаю браузер и он не знает о том что есть права на геолокацию. но он понимает что приложению даны права. 

добавил.

app-release.7z

Изменено пользователем haword
Ссылка на комментарий
  • 0
17 минут назад, haword сказал:

могу выложить здесь свою apk, с программой, сырую и недоделанную, на java, еще не зарелизенную в плеэмаркете, в ней это работает. при показе активити идет запрос, на доступ к геолокации. если его разрешить, то при повторном открытии этой формы в браузере уже будет значок геолокации. в первый раз его нет потому что после запроса разрешения не пересоздается я так понимаю браузер и он не знает о том что есть права на геолокацию. но он понимает что приложению даны права. 

добавил.

app-release.7z

это здорово, что у тебя (тут на "ты" принято?) работает )
но я не адвокат FMX, и проблема - с FMX, один из способов решения - такой
хотя, в принципе, можно попробовать и по другому... но, собсна, это не моя проблема, мне просто было интересно её решить )

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

проблема и условия её возникновения описаны в первом сообщении ))
встроенный браузер не использует разрешения приложения

кстати, тут есть момент:
если мы, например, запретим приложению использовать геолокацию, а браузеру в данном исполнении, получается, безусловно разрешаем )) неувязочка... это надо проверить )))
вероятно, надо сложнее логику делать )

Я проверил. После патча все работает как задумано, браузер наследует разрешения приложения:

  • Если приложению правильно даны разрешения на геолокацию, то браузер разрешения не спрашивает, геолокация нормально работает в браузере.
  • Если пользователь не дал приложению разрешение на геолокацию, то в браузере она тоже работать не будет, причем браузер и не будет сообщать о том что нет разрешения - при тыке на кнопку мое положение ничего не происходит. Это вполне нормально - пользователь сознательно отказался и понимает что геолокация работать не будет.

Приложение, если пользователь не дал разрешение, и не должно по идее открывать браузер, если геолокация важная составляющая сервиса. У меня к примеру выдается сообщение - мол вы не дали разрешение, приложение работать не может. И по идее нужно предлагать пользователю открыть настройки для того чтоб он дал разрешение. Кстати в каком то приложении видел что по кнопке открываются настройки приложений - удобно, но как интересно это сделать?

 

Изменено пользователем Евгений Корепов
Ссылка на комментарий
  • 0
2 часа назад, Евгений Корепов сказал:

Кстати в каком то приложении видел что по кнопке открываются настройки приложений - удобно, но как интересно это сделать?

Использовать LocationSettingsReqest, транслировав его. Но или устаревшее SettingsApi.

К сожалению нет возможности самому посмотреть и воспроизвести это все, временно нет подходящего аппарата

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

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

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

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

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

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

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

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

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

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