-
Постов
16 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные bossalex
-
-
Всем привет пытаюсь сделать push с большой картинкой на Delphi FMX 10.3.1 RIO используя материалы этого топика и http://delphifmandroid.blogspot.com/2014/07/java_11.html
В итоге подключил свой ImageDownloader.class по закачке картинки с url и заменил модифицированный мною NotificationPublisher.class и обновил fmx.jar создал classes.dex осталось проверить в проекте, отключить дефолтный classes.dex задеплоить новый .
Надо бы еще в push добавить кнопку со ссылкой на url сайта в NotificationPublisher.class я переменную для него добавил, осталось реализовать. Там как через активи это делается или через интент,
RIO IMAGE PUSH добавил архив с class и fmx.jar
-
Надо вывести в puch картинку, которую получаем по ссылке. По ссылке понятно как получить картинку, а как ее вывести в puch сообщение
-
Как получить - узнать ip адрес устройства на Delphi fmx android
-
1 час назад, aleksandrguru сказал:
Вот посмотри пример все работает https://okurl.ru/Ga7V5RR
Большое спасибо выручили, только как-то стало за мудрено использовать компонент.
-
10 минут назад, aleksandrguru сказал:
Вот посмотри пример все работает https://okurl.ru/aUup
cсылка не работает, пожалуйста дайте прямую ссылку на яндекс диск
-
Ниже код работал при правильном манифесте(AndroidManifest.template.xml его переделал перестал, а исходник не сохранил.
Если кто гуру в этом деле помогите, в долгу не останусь. Являюсь пожизненным поклонником Delphi от 1 версии до последней, первые приложения писал начиная с 1997г.
если кого интересуют мои наработки поделюсь https://www.fl.ru/users/bossalex/
где-то рабочий код брал под fmx 10.3.1 RIO, этот работает только на 10.1.2
==========================исходник проекта прикрепил----------->>>
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
Androidapi.JNI.Location, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes,
Androidapi.JNI.Os,Androidapi.Helpers, FMX.Layouts, FMX.ListBox, FMX.StdCtrls,
FMX.Controls.Presentation,FMX.Platform,System.Rtti;type
TLocationListener = class;
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
{ Private declarations }private
FLocationManager : JLocationManager;
locationListener : TLocationListener;
public
destructor Destroy; override;
{ Public declarations }
procedure onLocationChanged(location: JLocation);
end;TLocationListener = class(TJavaLocal, JLocationListener)
private
[weak]
FParent : TForm1;
public
constructor Create(AParent : TForm1);
procedure onLocationChanged(location: JLocation); cdecl;
procedure onProviderDisabled(provider: JString); cdecl;
procedure onProviderEnabled(provider: JString); cdecl;
procedure onStatusChanged(provider: JString; status: Integer; extras: JBundle); cdecl;
end;var
Form1: TForm1;implementation
{$R *.fmx}
uses FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText;
{ TLocationListener }
constructor TLocationListener.Create(AParent: TForm1);
begin
inherited Create;
FParent := AParent;
end;procedure TLocationListener.onLocationChanged(location: JLocation);
begin
FParent.onLocationChanged(location);
end;procedure TLocationListener.onProviderDisabled(provider: JString);
beginend;
procedure TLocationListener.onProviderEnabled(provider: JString);
beginend;
procedure TLocationListener.onStatusChanged(provider: JString; status: Integer;
extras: JBundle);
beginend;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
LocationManagerService: JObject;
iter : JIterator;
location : JLocation;
ClipService: IFMXClipboardService;
begin
try
if not Assigned(FLocationManager) then
begin
LocationManagerService := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.LOCATION_SERVICE);
FLocationManager := TJLocationManager.Wrap((LocationManagerService as ILocalObject).GetObjectID);
if not Assigned(locationListener) then
locationListener := TLocationListener.Create(self);
FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.GPS_PROVIDER, 10000, 10, locationListener,
TJLooper.JavaClass.getMainLooper);
end;
iter := FLocationManager.GetAllProviders.Iterator;
ListBox1.Clear;
while iter.hasNext do
begin
ListBox1.Items.Add(JStringToString(iter.next.ToString));
end;
CheckBox1.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER);
CheckBox2.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER);
location := FLocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPS_PROVIDER);
onLocationChanged(location);
except
on e:Exception do
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService,ClipService) then
Begin
ClipService.SetClipboard(TValue.From<string>(e.Message));
ShowMEssage(e.Message);
end;
end;
end;
end; -
пробовал на Delphi 10.1.2 вот это код пашет, но был вариант и под RIO пахал, но сейчас нет посеял AndroidManifest.template.xml файл проекта прикрепил
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
Androidapi.JNI.Location, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes,
Androidapi.JNI.Os,Androidapi.Helpers, FMX.Layouts, FMX.ListBox, FMX.StdCtrls,
FMX.Controls.Presentation;type
TLocationListener = class;
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
{ Private declarations }private
FLocationManager : JLocationManager;
locationListener : TLocationListener;
public
destructor Destroy; override;
{ Public declarations }
procedure onLocationChanged(location: JLocation);
end;TLocationListener = class(TJavaLocal, JLocationListener)
private
[weak]
FParent : TForm1;
public
constructor Create(AParent : TForm1);
procedure onLocationChanged(location: JLocation); cdecl;
procedure onProviderDisabled(provider: JString); cdecl;
procedure onProviderEnabled(provider: JString); cdecl;
procedure onStatusChanged(provider: JString; status: Integer; extras: JBundle); cdecl;
end;var
Form1: TForm1;implementation
{$R *.fmx}
uses FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText;
{ TLocationListener }
constructor TLocationListener.Create(AParent: TForm1);
begin
inherited Create;
FParent := AParent;
end;procedure TLocationListener.onLocationChanged(location: JLocation);
begin
FParent.onLocationChanged(location);
end;procedure TLocationListener.onProviderDisabled(provider: JString);
beginend;
procedure TLocationListener.onProviderEnabled(provider: JString);
beginend;
procedure TLocationListener.onStatusChanged(provider: JString; status: Integer;
extras: JBundle);
beginend;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
LocationManagerService: JObject;
iter : JIterator;
location : JLocation;
begin
try
if not Assigned(FLocationManager) then
begin
LocationManagerService := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.LOCATION_SERVICE);
FLocationManager := TJLocationManager.Wrap((LocationManagerService as ILocalObject).GetObjectID);
if not Assigned(locationListener) then
locationListener := TLocationListener.Create(self);
FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.GPS_PROVIDER, 10000, 10, locationListener,
TJLooper.JavaClass.getMainLooper);
end;
iter := FLocationManager.GetAllProviders.Iterator;
ListBox1.Clear;
while iter.hasNext do
begin
ListBox1.Items.Add(JStringToString(iter.next.ToString));
end;
CheckBox1.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER);
CheckBox2.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER);
location := FLocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPS_PROVIDER);
onLocationChanged(location);
except
on e:Exception do showmessage('Ошибка :'+e.Message);
end;
end;destructor TForm1.Destroy;
begin
if Assigned(locationListener) then
FLocationManager.removeUpdates(locationListener);
inherited;
end;procedure TForm1.onLocationChanged(location: JLocation);
begin
Label4.Text := location.getLatitude.ToString;
Label5.Text := location.getLongitude.ToString;
Label6.Text := location.getAltitude.ToString;
end;end.
-
Id_client
Id выданный сервисом PUSH нотификации(и что такое центр нотификации компонент NotificationC: TNotificationCenter;
Notification: TNotification; он получает сообщения от PUCH сервера и выводит количество сообщений на иконке приложения? )Id это то что на закладке Cloud Messaging Идентификатор отправителя или что то другое
пытаюсь к приложение подключить PUSH сообщения.
С PUSH ни разу не сталкивался делаю приложение на Delphi FMX 10.1 android или надо ставить версию 10.3 RIO?
-
Delphi 10.1 FMX android получаю данные с сервера в rest закодирован base64 хранится pdf, нужно его раскодировать и сохранить на устройстве - далее отобразить пользователю
Пример ответа сервера:
{
"code": 200,
"body": {
"finishFlag": true,
"instanceId": "c9d0328a-6234-46d9-bc3b-d8adef9a0a71",
"nextStep": {
"pdf": "JVBERi0xL....PRg0K", -- pdf в base64 (он большой, для примера обрезал)
"sort_order": 10,
"is_not_prepr": false,
"stepType": "A$FS_PRINT",
"clientStep": true
}
},
Как отобразит вроде пример есть через intent (я это делал только через THttp скачивал и через установленный с плеймаркет просмотрщиком PDF просматривал )
{$IFDEF ANDROID} Uses Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Net; {$ENDIF}
procedure btnPdfClick(Sender: TObject); var fName : String; {$IFDEF ANDROID} Intent : JIntent; URI : Jnet_Uri; {$ENDIF} begin fName := TPath.GetSharedDownloadsPath + PathDelim + 'test.pdf'; {$IFDEF ANDROID} URI := TJnet_Uri.JavaClass.parse(StringToJString('file:///' + fName)); intent := TJIntent.Create; intent.setAction(TJIntent.JavaClass.ACTION_VIEW); intent.setDataAndType(URI,StringToJString('application/pdf')); SharedActivity.startActivity(intent); {$ENDIF} end;
-
Кто знает как яндекс почту прикрутить к indy с ssl под дектоп работает, под андроид раньше работало сейчас оред что в отладке при коннекте SMTP не загружена библиотека SSL ранше использовал связку tidSMTP+tidMessage+IdSSLIOHandlerSocketOpenSSL c 465 портом
Этото код работает в десктопе на яндексе под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll
Function TFormOFORMLENIE.mail(email:STRING):Boolean;
var email:String;
begin
try
Smtp.AuthType:=satDefault;
SMTP.ReadTimeout:=10000;
SMTP.Host := 'smtp.yandex.ru';
SMTP.Port := 465;
SMTP.Username :=login;
SMTP.Password :=pass;SMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
SMTP.UseTLS:= utUseImplicitTLS;IdSSLIOHandlerSocketOpenSSL1.Destination := SMTP.Host+':'+IntToStr(SMTP.Port);
IdSSLIOHandlerSocketOpenSSL1.Host := SMTP.Host;
IdSSLIOHandlerSocketOpenSSL1.Port := SMTP.Port;
IdSSLIOHandlerSocketOpenSSL1.DefaultPort := 0;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
MailMessage.From.Name := 'Тест';
MailMessage.Subject := 'Тест: '+FormatDateTime('dd.mm.yy-hh:nn',Now) ;MailMessage.From.Address :='bossalex@ya.ru';
MailMessage.Recipients.EMailAddresses := email;
MailMessage.Body.Text := MemoTXT.Text;
try
try
SMTP.Connect;// орет нет библиотеки SSL - под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll только не FMX на VCL к яндексу коннектися и отправляет письма,// есть еще libgcc_s_dw2-1.dll libwinpthread-1.dll msvcr100.dll правда не помню тоже какието библиотеки забыл для чего, надо в инете поковырять
sleep(200);
Application.ProcessMessages;
SMTP.Send(MailMessage);
ShowMessage('Письмо отправлено!');
MailMessage.MessageParts.Clear;
except
on e: Exception do
begin
sleep(200);
ShowMessage('Письмо не отправлено!');
end;
end;
finally
MailMessage.MessageParts.Clear;
SMTP.Disconnect;
end;
except
end;
end; -
ни parent ни фига не помогает я уже задрался под андроид приложение лепить только под windows fmx както работает под android одно безумие
я так думаю это 10,1 глючить так как по xe 8 таких глюков не было или я чтото упустил под android 6 надо попробовать под 4
function TFormKorzina.free_(n:String):Boolean;
begin
try
{$IF DEFINED(iOS) or DEFINED(ANDROID)}
SeekObject:=FindComponent(n);
if SeekObject<>nil then
begin
TControl(SeekObject).DisposeOf;
TControl(SeekObject):=nil;
end;
//freeandnil(TComponent(SeekObject));//.DisposeOf;
{$ENDIF}
{$IFDEF MSWINDOWS}
SeekObject:=FindComponent(n);
if SeekObject<>nil then
begin
TControl(SeekObject).Parent:=nil;
TControl(SeekObject).Free;
TControl(SeekObject):=nil;
end;
{$ENDIF}
exceptend;
end; -
в коде под андроид на Delphi FMX не могу решить проблему
при повторном вызове окна методом Show убиваю компонент RectangleFon.DisposeOf; служащий контейнером других элементов
затем заново его создаю RectangleFon:=TRectangle.Create(FormKorzina);
потом при обращении к вновь созданным элементам таким же способом
получаю ошибку Segmentation fault (11). В другой форме такой метод работает
а тут ругается if FormKorzina.SumDostavki>0 then
FormKorzina.LabelSumStoimost.Text:=floatToStr(FormKorzina.SumDostavki)+' рублей' на выполненииСкорее кудато лезу не туда в память а что делать не в курсе пробовал убивать freeandnill(RectangleFon); результат такой же, уже и дебагером проверял ругается то на фонт то на get в компоненте использовал данный метод убийства раньше freeandnill вроде проблем не было
-
-
4 часа назад, bossalex сказал:
Недавно компилил приложение на Delphi FMX Android при обращении к серверу https при выполнении Get запроса от компонента TIdHttp запросил библиотеку "Could not load SSL library" используется протокол sslvTLSv1_2 в windows все пашет в андроид нет , накопал что можно подключить библиотеки libssl.so и libcrypto.so через deployment .assets\internal , А вот как в коде дальше их использовать никто примерчик не выложил, хоть и обсуждали на интернет просторах 100 раз, те как прикрутить к IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile. Если есть у кого код выложите пожалуйста? или скинте по email bossalex@ya.ru
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method.sslvTLSv1_2;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode.sslmUnassigned; -
Недавно компилил приложение на Delphi FMX Android при обращении к серверу https при выполнении Get запроса от компонента TIdHttp запросил библиотеку "Could not load SSL library" используется протокол sslvTLSv1_2 в windows все пашет в андроид нет , накопал что можно подключить библиотеки libssl.so и libcrypto.so через deployment .assets\internal , А вот как в коде дальше их использовать никто примерчик не выложил, хоть и обсуждали на интернет просторах 100 раз, те как прикрутить к IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile. Если есть у кого код выложите пожалуйста? или скинте по email bossalex@ya.ru
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method.sslvTLSv1_2;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode.sslmUnassigned;
[iOS] Полноценная фоновая работа приложения
в iOS
Опубликовано
А есть можно выложить исходники для приложения трекера