Jump to content

Dave Nottage

Members
  • Content Count

    1269
  • Joined

  • Last visited

  • Days Won

    28

Dave Nottage last won the day on March 18

Dave Nottage had the most liked content!

Community Reputation

493 Excellent

Technical Information

  • Delphi-Version
    Delphi 11 Alexandria

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Dave Nottage

    Error when iOS application building in Delphi 11.2

    What exactly is the error message you are seeing?
  2. Xcode 15 doesn't have iOS 16.x SDKs, no.. but that does not mean you cannot debug iOS 16 (or earlier) devices. With no "trickery" whatsoever. iOS 16.x devices do not have the new debugging support introduced in iOS 17, and Xcode 15 handles that. Not sure what you mean by "manually". The only "incompatibilities" are if you attempt to use features in code available in the newer SDK on a device with an older OS (when the feature is not available in that older OS). That's true, however you can import an iOS 17.x SDK from Xcode 15, build your app against it, and It will happily run on an iOS 16.x device (as long as you do not attempt to use features from a newer OS, as mentioned above), and you can use the debugger with Delphi. As I mentioned earlier, it's debugging with an iOS 17.x device that is the major issue right now.
  3. Delphi can already use Xcode 15. The biggest issue at the moment is debugging with iOS 17 (or higher) devices, which is a problem regardless of Xcode version. Debugging on devices with iOS 16.x still works using Xcode 15. A secondary issue is this one: a problem if your app needs to link to 3rd party binaries that were built with Xcode 14 or higher.
  4. Not sure what the problem is - it works fine on my Pixel 6 Pro with Android 14. Perhaps try a clean/build.
  5. What version of Android is on your device, and what make/model of device is it?
  6. Does this happen for you with a blank application? If not, it would help to have a sample app that "freezes" like you're describing.
  7. Dave Nottage

    Java type not registered

    If you're using a demo app, you should not receive that error. The Java type comes from a java library from the Lib folder in Kastri, and which one will depend on the version of Delphi you are using. Delphi 10.x: dw-kastri-base.jar Delphi 11.x: dw-kastri-base-2.0.0.jar Delphi 12.x: dw-kastri-base-3.0.0.jar The relevant jar file would have been added to the Libraries node of the Android 32-bit target in Project Manager, e.g (Delphi 12.x): <snip> Which should be compiled in with the app, unless you're using Delphi 11.3, which requires a workaround.
  8. Use one that works with the version of Delphi you're using. Either use Tools | Manage Features (in the Delphi menu) and select the Android SDK/NDK, or download a compatible NDK from the NDK downloads. r21e looks like it might work: https://github.com/android/ndk/wiki/Unsupported-Downloads#r21e
  9. Dave Nottage

    TWebBrowser + dynamic JS question

    Please see this link.
  10. I revisited it anyway, and have attached the updated test project. Using Codex 2.2.0 I downloaded the AndroidX appcompat package (note that it should be v1.2.0 to align with what Delphi 12.1 uses): ..and added it using the Add Android Package menu item that Codex adds to the Project Manager context menu. This is after deploying at least once, so that resources are merged properly. In Delphi 12.1 deploying at least once also means that AndroidManifest.template.xml is created (in 12.0 and earlier it is created when building, rather than deploying), and the following is added to it, just before <%activity%>: <activity android:name="com.delphiworlds.kastri.DWFilesActivity" android:excludeFromRecents="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:mimeType="*/*" /> <data android:scheme="content" /> <data android:host="*" /> </intent-filter> </activity> ..and of course, the dw.filesactivity.jar library is added to the Android 32-bit Libraries node (does not need to be added to 64-bit unless you're using Delphi 11.3) RSP41337.zip
  11. Dave Nottage

    TWebBrowser + dynamic JS question

    Is this on Windows? If so, are you setting the WindowsEngine property of the TWebBrowser to EdgeOnly? The result you're seeing happens if TWebBrowser uses IE.
  12. Are you using the latest released version? i.e. Codex 2.2.0? If so, I'll revisit this since I haven't looked at it since upgrading to 12.1.
  13. Dave Nottage

    TWebBrowser + dynamic JS question

    There is no Document property, however there is a way of accessing the underlying web view (ICoreWebView2 on Windows, JWebView on Android and WKWebView on macOS/iOS), e.g. on Android: var LWebView: JWebView; begin if Supports(WebBrowser1, JWebView, LWebView) then // Do something with LWebView end; That said, as time goes on the underlying web view (on all platforms) has had direct access to HTML removed, so it has become necessary to execute JavaScript to achieve the same thing. Unfortunately, TWebBrowser has only EvaluateJavascript, which does not support returning a result, so it's necessary to use the technique above to achieve this, as I've done in the WebBrowserExt feature in Kastri (demo here). Using TWebBrowserExt, ExecuteJavaScript could be called with cJavaScriptGetPageContents (from the DW.JavaScript unit), thus: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.WebBrowser, FMX.Controls.Presentation, FMX.StdCtrls, DW.WebBrowserExt; type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; procedure Button1Click(Sender: TObject); procedure WebBrowser1DidFinishLoad(ASender: TObject); private FWebBrowserExt: TWebBrowserExt; public constructor Create(AOwner: TComponent); override; end; var Form1: TForm1; implementation {$R *.fmx} uses DW.JavaScript; { TForm1 } constructor TForm1.Create(AOwner: TComponent); begin inherited; WebBrowser1.WindowsEngine := TWindowsEngine.EdgeOnly; // On Windows, unlikely to work with IE FWebBrowserExt := TWebBrowserExt.Create(WebBrowser1); end; procedure TForm1.WebBrowser1DidFinishLoad(ASender: TObject); begin FWebBrowserExt.ExecuteJavaScript(cJavaScriptGetPageContents, procedure(const AJavaScriptResult: string; const AErrorCode: Integer) begin // AJavaScriptResult should now contain the page contents end ); end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://help.websiteos.com/websiteos/example_of_a_simple_html_page.htm'); end; end. Not sure whether that answer was wrong in 2017, but it's certainly incomplete now, given the above.
  14. Dave Nottage

    Custom classes.dex in D12

    Does this mean you've moved on from attempting to generate a custom classes.dex? Going by their documentation, the init method needs to be called. (the one that takes a Context and a ScannerResult as parameters). This may present a problem because Delphi uses init as a method name for Java constructors, and XcBarcodeScanner has its own static method called init (which is not a constructor), so the JNI code may actually try and find a constructor method (and fail) rather than the actual method called init. I'm not sure if there's a solution for this yet, other than writing Java code of your own (that you would call from Delphi) that uses the XcBarcodeScanner class. Incidentally, I've managed to acquire the .jar file myself using information from the Github link you gave.
  15. Dave Nottage

    Custom classes.dex in D12

    I've tried searching for this with not much success. Do you have a link?
×