-
Content Count
1626 -
Joined
-
Last visited
-
Days Won
37
Everything posted by Dave Nottage
-
Controls that support ControlType of Platform appear above the MapView. Not sure if that helps you...
-
On iOS, the first location change has values of 0 for OldLocation.Latitude and OldLocation.Longitude. On Android, they're both NaN, so your code will fail in that case. You should do this check (at least): if not IsNan(Latitude1) and not IsNan(Longitude1) then
-
Squint and read: CreateFormFromStings
Dave Nottage replied to Darian Miller's topic in RTL and Delphi Object Pascal
More a case of: a major release is the best time to do it, since it can be interface breaking. If, after the change, a users code does not compile, I doubt they're going to say: "I want it back with the incorrect spelling". They're more likely to say: "I'm upset that you spelled it wrong in the first place, but fixing it is way better". -
You're misrepresenting my reply. It is exactly why I said to examine that file. It certainly does have an effect when creating new projects.
-
Java version used for bundle tool (Android 64 aab) and error
Dave Nottage replied to Chris Pim's topic in FMX
Pretty sure it uses the JDKPath entry at HKEY_CURRENT_USER\Software\Embarcadero\BDS\20.0\PlatformSDKs\AndroidSDK25.2.5_64bit.sdk Which is reflected in the "Java" tab of the Android SDK settings in SDK manager. -
That's because you cannot retrieve existing SMS messages on iOS - this is a privacy restriction from Apple. You cannot even intercept new messages.
-
Check this link: https://forums.embarcadero.com/thread.jspa?threadID=256233 This is a link to the demo I created: https://forums.embarcadero.com/thread.jspa?messageID=899142 Edit: Just realised you want it for 10.3.3. That old demo might still work, though. If not, I'll help modify it Edit 2: Also now realised you want existing messages. Probably better to use the conversations class: https://developer.android.com/reference/android/provider/Telephony.Sms.Conversations. If the code on FMX Express does not work, please indicate what errors you're having. It may be that you just need to request the READ_SMS permission.
-
Which delphi version creates 17.3 project files?
Dave Nottage replied to dummzeuch's topic in Delphi IDE and APIs
Doesn't look like there was any released version (including betas?) according to the table here: https://wiert.me/2016/09/06/delphi-version-info-table-need-help-with-these-projectversion-for-c-builder-delphi-2005-and-2006-dllsuffix-for-c-builder-appbuilder-1-13-codename/ -
JNI.rar did not include the compiled .jar file, nor did the project have .jar file added to libraries. I updated the project to Delphi 10.3.3, compiled the UseAsJar.java file into UseAsJar.jar, added it to the project, zipped it and attached it to this reply. The project now works OK here. You can "downgrade" the project to whatever version of Delphi you're using by right-clicking the "Libraries" node and click "Revert System Files to Default" prjJNITest.zip
-
At the very top of the Java file: package com.mydomain.mypackage (for example) There's a plethora of examples on the internet, e.g in the files here: https://github.com/DelphiWorlds/KastriFree/tree/master/Java
-
Some code I'm working with uses AddFontResource or AddFontResourceEx - both return a positive value (in this case 1), so according to the documentation the font is added successfully, however they are not actually displaying correctly. The problem happens only on certain machines, in this case Getac Windows Tablet (F110 and T800 models), but the fonts are displayed correctly using the same application on a Microsoft Surface. All machines are using an administrator user account. Any ideas as to why it does not work on the machines in question?
-
AddFontResource/Ex not working on some machines
Dave Nottage replied to Dave Nottage's topic in Windows API
I think you may be right. No, since the goal is to not have them installed. Having said that, I have a bad feeling that the machines on which it does work may have the font already installed (not sure if anyone actually checked), especially given Hans' answer. I'll know for sure tomorrow. -
1. You don't need to add the classes.dex file to the project, nor the .java files 2. The UseAsJar.java file is missing the package directive which by convention is a domain in reverse order followed by a package identifier, e.g. com.mydomain.mypackage. Also, you do not need a main method, unless you're intending to run the jar separately. 3. Your import (android.JNI.UseAsJAR) is incorrect, since the signature for JUseAsJar does not match the package/class. It should be the package name followed by the class name e.g. com/mydomain/mypackage/UseAsJar. You don't need RegisterTypes, either; I believe that's a hangover from earlier versions of Delphi. 4. Once you've recompiled the .jar, add it to the project, in Project Manager under Target Platforms > Android. This saves having to manually deploy the classes.dex. You could then remove that manual addition. I'd also recommend updating to Delphi 10.3.3
-
Deploying macOS apps with App Store configuration
Dave Nottage replied to Dave Nottage's topic in Delphi IDE and APIs
I expect you mean certificate update? Recently as in a couple of months ago, yes, however I removed the old ones. The provisioning page for macOS is very different from iOS - you need to manually type in the developer certificate name (and installer certificate name if one applies), and cannot even select a provisioning profile. -
Linking errors with FacebookAudienceNetwork
Dave Nottage replied to Chris Pim's topic in Cross-platform
Same happens for me. My guess is a bug in ld, since lipo reports that it has arm64. Reported the issue here: https://quality.embarcadero.com/browse/RSP-27697 -
Rio.1 does not save all layout settings
Dave Nottage replied to Sherlock's topic in Delphi IDE and APIs
I'd like to know how you've solved this - it's still a problem for me. -
Delphi is turning 25, and to celebrate, there's a webinar being held this Friday, February 14th (US time). To register for the webinar, please visit: https://embt.co/Delphi25thWebinar
-
You could extend this demo: https://github.com/Embarcadero/RADStudio10.3.3Demos/tree/master/Object Pascal/Mobile Snippets/PhoneDialer Just create a handler for the OnCallStateChanged event of FPhoneDialerService, handle TCallState.Incoming and fetch the call using GetCurrentCalls
-
Yes, the application delegate needs to implement this method: https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application?language=objc This means class_addmethod will need to be called to add it to the delegate (DelphiAppDelegate). It will also need an import for NSUserActivity, one of which follows (no guarantees as to being 100% accurate): NSUserActivityPersistentIdentifier = NSString; TNSUserActivityBlockMethod1 = procedure(inputStream: NSInputStream; outputStream: NSOutputStream; error: NSError) of object; TNSUserActivityBlockMethod2 = procedure of object; NSUserActivityClass = interface(NSObjectClass) ['{412EAEBF-5927-4D01-B83F-69D3B5DFE7B5}'] {class} procedure deleteAllSavedUserActivitiesWithCompletionHandler(handler: TNSUserActivityBlockMethod2); cdecl; [MethodName('deleteSavedUserActivitiesWithPersistentIdentifiers:completionHandler:')] {class} procedure deleteSavedUserActivitiesWithPersistentIdentifiers(persistentIdentifiers: NSArray; handler: TNSUserActivityBlockMethod2); cdecl; end; NSUserActivity = interface(NSObject) ['{B8C2F6C9-31FE-4282-B7CA-98C96E163033}'] function activityType: NSString; cdecl; procedure addUserInfoEntriesFromDictionary(otherDictionary: NSDictionary); cdecl; procedure becomeCurrent; cdecl; function delegate: Pointer; cdecl; function expirationDate: NSDate; cdecl; procedure getContinuationStreamsWithCompletionHandler(completionHandler: TNSUserActivityBlockMethod1); cdecl; function initWithActivityType(activityType: NSString): Pointer; cdecl; procedure invalidate; cdecl; function isEligibleForHandoff: Boolean; cdecl; function isEligibleForPrediction: Boolean; cdecl; function isEligibleForPublicIndexing: Boolean; cdecl; function isEligibleForSearch: Boolean; cdecl; function keywords: NSSet; cdecl; function needsSave: Boolean; cdecl; function persistentIdentifier: NSUserActivityPersistentIdentifier; cdecl; function referrerURL: NSURL; cdecl; function requiredUserInfoKeys: NSSet; cdecl; procedure resignCurrent; cdecl; procedure setDelegate(delegate: Pointer); cdecl; procedure setEligibleForHandoff(eligibleForHandoff: Boolean); cdecl; procedure setEligibleForPrediction(eligibleForPrediction: Boolean); cdecl; procedure setEligibleForPublicIndexing(eligibleForPublicIndexing: Boolean); cdecl; procedure setEligibleForSearch(eligibleForSearch: Boolean); cdecl; procedure setExpirationDate(expirationDate: NSDate); cdecl; procedure setKeywords(keywords: NSSet); cdecl; procedure setNeedsSave(needsSave: Boolean); cdecl; procedure setPersistentIdentifier(persistentIdentifier: NSUserActivityPersistentIdentifier); cdecl; procedure setReferrerURL(referrerURL: NSURL); cdecl; procedure setRequiredUserInfoKeys(requiredUserInfoKeys: NSSet); cdecl; procedure setSupportsContinuationStreams(supportsContinuationStreams: Boolean); cdecl; procedure setTargetContentIdentifier(targetContentIdentifier: NSString); cdecl; procedure setTitle(title: NSString); cdecl; procedure setUserInfo(userInfo: NSDictionary); cdecl; procedure setWebpageURL(webpageURL: NSURL); cdecl; function supportsContinuationStreams: Boolean; cdecl; function targetContentIdentifier: NSString; cdecl; function title: NSString; cdecl; function userInfo: NSDictionary; cdecl; function webpageURL: NSURL; cdecl; end; TNSUserActivity = class(TOCGenericImport<NSUserActivityClass, NSUserActivity>) end; The method implementation should probably be (again no guarantees): class function TApplicationDelegate.applicationContinueUserActivityRestorationHandler(self: id; _cmd: SEL; application: PUIApplication; userActivity: Pointer; restorationHandler: Pointer): Boolean; As far as I know, it doesn't necessarily have to be patched in FMX.Platform.iOS since you should be able to call class_addmethod anywhere, as long as you pass it the correct class function. Hopefully this will give you head start.
- 9 replies
-
- ios
- firemonkey
-
(and 6 more)
Tagged with:
-
class designation question
Dave Nottage replied to David Schwartz's topic in Algorithms, Data Structures and Class Design
(2) is used pretty extensively. In the Delphi source folder (and subfolders) there are 386 instances of it. -
Going (more) insane here.. I have the following test code: uses System.Win.Registry; function SetTokenPrivilege(const APrivilege: string; const AEnable: Boolean): Boolean; var LToken: THandle; LTokenPriv: TOKEN_PRIVILEGES; LPrevTokenPriv: TOKEN_PRIVILEGES; LLength: Cardinal; LErrval: Cardinal; begin Result := False; if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, LToken) then try // Get the locally unique identifier (LUID) . if LookupPrivilegeValue(nil, PChar(APrivilege), LTokenPriv.Privileges[0].Luid) then begin LTokenPriv.PrivilegeCount := 1; // one privilege to set case AEnable of True: LTokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; False: LTokenPriv.Privileges[0].Attributes := 0; end; LPrevTokenPriv := LTokenPriv; // Enable or disable the privilege Result := AdjustTokenPrivileges(LToken, False, LTokenPriv, SizeOf(LPrevTokenPriv), LPrevTokenPriv, LLength); end; finally CloseHandle(LToken); end; end; procedure TForm1.Button1Click(Sender: TObject); var LReg: TRegistry; begin if not SetTokenPrivilege('SeBackupPrivilege', True) then Exit; // <====== LReg := TRegistry.Create(KEY_ALL_ACCESS); try LReg.RootKey := HKEY_CURRENT_USER; if not LReg.SaveKey('Software\Microsoft\Notepad', 'C:\Temp\Notepad.reg') then ShowMessage('Could not save'); finally LReg.Free; end; end; Which results in showing the "Could not save" message. Am I missing something obvious?
-
Just out of curiosity: which versions will be supported? From Delphi 2009 and up?
-
Custom TrueType font in FMX Android app?
Dave Nottage replied to Lars Fosdal's topic in Cross-platform
That's the only way of doing it, and it's very trivial to do. https://quality.embarcadero.com/browse/RSP-16741 -
Custom TrueType font in FMX Android app?
Dave Nottage replied to Lars Fosdal's topic in Cross-platform
There's a number of examples if you Google for: custom fonts delphi android -
Linker errors when including Facebook SDK on iOS12
Dave Nottage replied to Hans♫'s topic in Cross-platform
Excellent! There's someone in another post here asking about whether there are updated imports for the FB SDK. Perhaps you can help them, or at least give them an idea as to whether everything still works anyway. (using 4.36)