Перейти к содержанию
  • Регистрация
  • 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

Алексей, позволь еще раз поблагодарить! И прошу прощения за то что я тупил и капризничал ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Вот вам apk приложения для того чтоб потестить самостоятельно. 

UhtaBus.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, Евгений Корепов сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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


  • Похожий контент

    • От ComAlex
      Goоgle Play перестает поддерживать 32-bit Android-приложения c 01.08.2019.
      А выкладывать в Goоgle Play новые УЖЕ нельзя.
      Последние же Delphi XE не позволяют создать 64-bit Android-приложения.
      Кто знает, когда появится новая версия с поддержкой 64 - bit? Говорили, что в конце лета, но лето кончилось
    • От ComAlex
      Здравствуйте, господа программисты!
      Пытаюсь протестировать Android приложение на любом эмуляторе.
      Всегда одна ошибка "Unable to create process: Performing Streamed Install"
      Понимаю, что ссылок много по данной теме в интернете, но ни одна не помогла.
      Использую Embarsadero Delphi 10.3
      При компиляции на реальный телефон всё работает
      При компиляции на эмулятор даже пустого приложения выдается та же ошибка
      "Unable to create process: Performing Streamed Install"
      В чем проблема? Хотя бы в какую сторону копать?
    • От Дмитрий Потапов
      Задался идеей написания IPTV приложения "для себя", в котором при желании смог бы реализовать что-то необходимое и удалить то, что не нужно.
      Собственно вопрос в другом: Я написал простое приложение, которое отлавливает коды кнопок с пульта, приложение по сути самое банальное, использует OnKeyDown и OnKeyUp (чисто для теста). И по нажатию на кнопку на пульте высылает например в Memo или ListBox Информацию о нажатой кнопке (включая ее код).
      Но суть в том, что далеко не все кнопки таким образом распознаются. Для примера:
      Кнопки громкости, назад, домой, увеличение\уменьшение громкости, стрелки(влево, вправо, вверх, вниз) и центральная кнопка (по совместительству OK).
      Цифры все определяются, как одна - 0
      Кнопки, которые не определяются (не срабатывает событие, ибо если был бы неизвестен код, то думаю, в таком случае получил бы все, кроме кода кнопки), но по нажатию кнопки, которая не определяется приложением - ничего не происходит вообще.
       
      Вопрос: Есть ли возможность как-то "научить" приложение распознавать эти кнопки? (Я где-то читал, может даже и здесь, что это все так реализовано именно на уровне самого FireMonkey, будто этих кнопок вообще не существует).
      Если эта тема уже поднималась на форуме или вопрос очень просто решается - извиняюсь)
      Решение: http://fire-monkey.ru/topic/5624-как-отловить-кнопки-пульта-ду/?do=findComment&comment=36399
       
    • От Татьяна
      Здравствуйте!
      Как можно из Android приложения узнать электронный адрес пользователя gmail (если он был настроен, конечно). Где-то же он сохраняется, если Google Play знает.
    • От msp888
      Всем привет! 
      У меня уже несколько лет работают приложения под Windows и под Andriod, в которых выполняется обмен данными по локальной сети по протоколу TCP-IP. Теперь вот мне понадобился прием multicast-пакетов по протоколу UDP. Под Windows всё работает замечательно, а вот под Android ничего принять не могу... 
      Подскажите чего не хватает, или дайте ссылку на пример, где уже реализовано подобное...
      Вот выдержки из кода:
      // переменные FSocket:TSocket; FiAR:IAsyncResult; FasyncWE:TMultiWaitEvent; data:TBytes; res:TWaitResult; WifiLock: JWifiManager_WifiLock; MulticastLock: JWifiManager_MulticastLock; ... // регистрация в группе procedure AddMemberShip(MultiAddr, InterfaceAddr:Cardinal); var Mreq:ip_mreq; begin fillchar(Mreq, SizeOf(Mreq), 0); move(MultiAddr, Mreq.IMR_MultiAddr.S_addr, SizeOf(Mreq.IMR_MultiAddr.S_addr)); move(InterfaceAddr, Mreq.IMR_Interface.S_addr, SizeOf(Mreq.IMR_Interface.S_addr)); CheckSocketResult(setsocketoption(FSocket.Handle, IPPROTO_IP, IP_ADD_MEMBERSHIP, Mreq, SizeOf(Mreq)), 'setsockopt:IP_ADD_MEMBERSHIP'); end; ... // permission... ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ACCESS_NETWORK_STATE ACCESS_WIFI_STATE CHANGE_CONFIGURATION CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE INTERNET READ_CALENDAR READ_EXTERNAL_STORAGE WRITE_CALENDAR WRITE_EXTERNAL_STORAGE WAKE_LOCK ... // настройка wi-fi WifiLock.acquire; MulticastLock.acquire; ... // создание и настройка сокета FSocket:=TSocket.Create(TSocketType.UDP); FSocket.Bind(TNetEndpoint.Create(ServerIP, ServerPort)); AddMemberShip(TIPAddress.Create(239, 78, 1, 1).Addr.S_addr, ServerIP.Addr.S_addr); AddMemberShip(TIPAddress.Create(239, 78, 1, 2).Addr.S_addr, ServerIP.Addr.S_addr); AddMemberShip(TIPAddress.Create(239, 78, 1, 78).Addr.S_addr, ServerIP.Addr.S_addr); ... // Прием данных в потоке... FiAR:=FSocket.BeginReceiveFrom; FasyncWE:=FiAR.AsyncWaitEvent; res:=FasyncWE.WaitFor; if res = wrSignaled then data:=FSocket.EndReceiveBytesFrom(FiAR); // Прием  
    • От Brovin Yaroslav
      Хочу поделиться с вами знаковой новостью для развития библиотеки FGX Native. Официально выпущено первое Андроид приложение в Google Play Market. 
      Это приложение разработано Станиславом(@sinuke) для учащихся лицея по специальности "Почтовая связь". Оно одновременно является и полным конспектом, который всегда под рукой, и системой проверки своих знаний.
      Полностью разработано на Delphi и стандартных компонентах альфа версии FGX Native 0.9.7.0 в Delphi 10.3 Community Edition. Быстрые списки, гибкая разметка, продвинутая навигация, анимации переходов, поддержка тем и многое другое. Это лишь малая часть того, что было задействовано из текущих возможностей библиотеки.
      Приложение опубликовано в Google Play Market. Вы можете уже прямо сейчас скачать и протестировать приложение самостоятельно, загрузив его по ссылке (https://play.google.com/store/apps/details?id=com.sinukeapps.post).
      Оставляйте свои комментарии и предложения. Они помогут сделать приложение лучше, а FGX Native еще удобнее и стабильнее.
      Релиз первого приложения с использование библиотеки FGX Native - это результат огромной работы, проделанной за эти годы. В тоже время, это сигнал того, что библиотека обладает достаточным минимумом для создания типовых Андроид приложений.
      Ну, и пожалуй самое приятное, это то, что библиотека готова к бета тестированию, которое откроется в ближайшее время.  О начале закрытого бета тестирования будет сообщено позже.
      Отдельное спасибо участникам закрытого альфа тестирования за поддержку, тестирование и идеи по улучшению библиотеки. В настоящее время участниками тестирования ведутся и другие интересные проекты на базе FGX Native, о которых я расскажу позже.
      Следите за новостями.
      Приложение: https://play.google.com/store/apps/details?id=com.sinukeapps.post Автор: Станислав Игнатович @sinuke Минимальные системные требования: Android 5.0 и arm v7         
    • От Yarpda
      В серьезных приложениях (Сбербанк-онлайн или Ютюб и т.п.) когда выходят обновления с новыми функциими, они запускают своеобразный интерактивный ролик. Когда экран затемняется и остается не затемненным только новый элемент экрана например, а на затемненном фоне описывается что делает этот новый элемент.Потом все это плавно переходит к другому элементу и т.д. Выглядит все довольно красиво.
      Задался вопросом, как сделать что-то подобное под FMX. Для себя не нахожу никаких очевидных решений.
      Подскажите если кто знает, направления решения этой задачи?
      Заранее спасибо.
    • От RADStudioDeveloper
      Привет всем!
      Есть необходимость в проекте для Android Delphi FMX (RAD Studio 10.2.3 Tokyo / RAD Studio 10.3.1 Rio ) сохранять изображения с фотокамеры смартфона Android через WiFi соединение в удалённую базу данных Microsoft SQL сервера в поле BLOB.
       
      Подскажите, пожалуйста,  возможные решения, примеры Delphi кода и требуемые компоненты для работы с камерой и SQL сервером через WiFi на Android устройствах.
    • От brunnengi
      Здравствуйте.
      Как отключить клавиатуру, что бы она не вылетала при получении фокуса в полях ввода?
    • От Mohamed BEN AMMAR
      hello 
      i'm using delphi fmx for building android App
      i have this code for Activating The WI-FI icon from android device:
      This could be found here .
      =========== code ==================
      uses
        Androidapi.Helpers,
        Androidapi.JNI.JavaTypes,
        Androidapi.JNI.GraphicsContentViewText,
        Androidapi.JNIBridge,
        Androidapi.JNI.WifiManager;
        procedure SetWifiEnabled (AEnable: Boolean); var   Obj: JObject;   WifiManager: JWifiManager; begin   Obj: = SharedActivityContext.getSystemService (TJContext.JavaClass.WIFI_SERVICE);   if Obj = nil then     Exit;     WifiManager: = TJWifiManager.Wrap ((Obj as ILocalObject) .GetObjectID);   WifiManager.setWifiEnabled (AEnable); end; 
       
       My question is About Activating Android location:
        Is it possible to activate the service location icon from android device
       programatically without using the Location or TLocationSensor component ....?
      however I know exactly that google has been Deactivate this API since android "4" just for security reasons .....
      but i have seen many apps in playstore can activate the service without using 
      this code here ask the user for activate the location manually .... procedure TForm1.GPSSettings; {$IFDEF ANDROID} var Intent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); {$ENDIF} end; in other versions like lolipopup can show just the Allow Permission system dialog timer ....( Asking the user for Allowing this App to Activate the service location ......) 
      I have an android device with lolipopup version and i try to execute the location EMBARCADERO sample but 
      this one can not activate the service location ICON even  my device show me the Allow permission dialog where i choose yes allow
      with never ASK....
      Finally ,  I like the WI-FI code above .....
      and i'm wondering if someone here can do this task for me (i need a unit as the WI-FI code above which can offer me
      the option to activate the Service Location ICON )
      I'm ready to paid for that task .....
       
      Sincerelly: Brave.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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