MrAnderson
-
Постов
23 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные MrAnderson
-
-
Уважаемые формучане. Решил опять поднять избитый вопрос о настройке под iOs.
И так у меня Delphi xe10.3 Rio + VMware MacOs High Sierra + Xcode 10.1 так есть developer аккаунт и живой iphone 6
Пробовал iOs Simulator приложение ставиться но не запускается. Видимо причина в разрядности системы или я не знаю. Но не запускаются даже приложения из коробки.
Компилирование под живое устройство вообще ничего не дает- компилируется говорит ок и все на устройстве реакции 0.
Вычитал что это возможно связано с Provisioning Profiles не пойму что с ним делать.
Если есть люди знающие подскажите в чем может быть проблема.
ДА и еще вопрос по сертификатам, не понимаю какой мне нужен серт для приложения там что-то много пунктов. (сказывается плохое знание английского).
Под андройд проблем таких не возникло.
В общем не пинайте я думаю что первый раз у многих возникали такие вопросы.
-
Цитата
https://developer.android.com/training/notify-user/build-notification#java
Because you must create the notification channel before posting any notifications on Android 8.0 and higher, you should execute this code as soon as your app starts. It's safe to call this repeatedly because creating an existing notification channel performs no operation.
Попробуй создай channel глобально и на создание формы .
Только устанавливаю 10.3
-
В 23.11.2018 в 13:57, Yarpda сказал:
Ага, осталось всего-то решить проблему перехода на 10.3...
Как прошел переход?
-
Да
И с прочитанного я понял что с 26 API изменился принцип вывода уведомлений.
-
You will have to make sure that your notification is a high priority, FCM will post it immediately
FCM attempts to deliver high priority messages immediately, allowing the FCM service to wake a sleeping device when necessary and to run some limited processing (including very limited network access). High priority messages generally should result in user interaction with your app. If FCM detects a pattern in which they don't, your messages may be de-prioritized
If your users interact with the notifcaiton FCM will not delay it. Background services may not be allowed in some cases in Android O but it doesn't mean you cannot send notifications
Also your notification will not be displayed if your not using notification channels, You can use this code to create notification channels
public void initChannels(Context context) { if (Build.VERSION.SDK_INT < 26) { return; } NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel channel = new NotificationChannel("default", "Channel name", NotificationManager.IMPORTANCE_DEFAULT); channel.setDescription("Channel description"); notificationManager.createNotificationChannel(channel);
}Может кто нибудь помочь вот с этим? Вроде как ответ на вопрос.
-
Причем если в демо выставить AndroidManifest.template.xml <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="26" /> то тоже перестают приходить уведомления.
-
Добрый вечер.
Подскажите пожалуйста уже наверно неделю читаю все подряд и ни как не могу понять.
Приложение из демо работает т.е. пуши локальные приходят а вот приложение созданное ранее не использовало эти уведомления после добавления не хочет их выводить.
Попробовал новый проект создать там все ок.
Что нужно добавить или где прописать что бы работали уведомления.
Если что продолжаю учиться.
Спасибо.
-
В 28.09.2018 в 21:46, Tumaso сказал:
@Alex7wrt,
устанавливают в том числе и новые пользователи на старых версиях андроида, и у них работает. minSdkVersion для этого.
Что касается targetSDK, то этим значением приложение уведомляет операционку, что возможно будет использовать api вплоть до данной версии. targetSDK 27 пока не использовал, только 26, и все что надо работает.
В самом коде делаю анализ текущей версии SDK, и в зависимости от нее возможно делаю дополнительные действия. Вот например, работа с правами:
{$IFDEF ANDROID} // для Android 6+ требуется дополнительная работа с правами if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then begin if (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_READ) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) or (TAndroidHelper.context.checkSelfPermission( StringToJString(PERMISSION_FILE_WRITE) ) = TJPackageManager.JavaClass.PERMISSION_DENIED) then begin // необходимо запросить разрешение на использование галереи LIsWaitPermissions := True; TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE ); end; end; {$ENDIF}
Можно по подробнее??
TAndroidHelper.Activity.requestPermissions( CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]), BUTTON_FILE );
В этом месте у меня AV выскакивает.
Delphi XE 10.2 Tokyo
-
Спасибо. Большое за развернутые ответ.
-
49 минут назад, Barbanel сказал:
Выдайте разрешение софтине, она же черным по-русски просит )))
Говорите только в design time, я не знаю что вы используете, возможно какой-то компонент коннектится к камере сразу после запуска приложения.
Проверьте, есть ли у этого компонента свойство Active или подобное и выставьте его в false.Если доступ к камере из кода - то смотрите в какой момент вы его вызываете.
Если нужно - запрашивайте разрешения программно. Вы были правы почему-то в настройках разрешений телефона стоял запрет на камеру хотя я его не ставил.
-
вот что выдает монитор
11-06 16:59:18.051: E/ANDR-IOP(571): IOP HAL: Received pkg_name = com.embarcadero.MiracleM pid = -1 11-06 16:59:18.073: E/ActivityTrigger(1815): activityStartTrigger: not whiteListedcom.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity/3 11-06 16:59:18.076: E/ActivityTrigger(1815): activityResumeTrigger: not whiteListedcom.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity/3 11-06 16:59:18.289: E/ActivityTrigger(1815): activityResumeTrigger: not whiteListedcom.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity/3
Что здесь написано вообще без понятия
-
Только что, Barbanel сказал:
ок, а дебажить пробовали?
Под андройдом я не понимаю как. Я только учусь можно так сказать и отлаживать не знаю как.
-
2 минуты назад, Barbanel сказал:
Выдайте разрешение софтине, она же черным по-русски просит )))
Да вроде все разрешено
<?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.embarcadero.MiracleM" android:versionCode="3" android:versionName="1.0.0" android:installLocation="auto"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.BIND_TEXT_SERVICE" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.READ_USER_DICTIONARY" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.USE_SIP" /> <uses-permission android:name="com.android.vending.BILLING" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="False" android:restoreAnyVersion="False" android:label="MiracleM" android:debuggable="True" android:largeHeap="False" android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme" android:hardwareAccelerated="true"> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="MiracleM" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="MiracleM" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" /> </application> </manifest> <!-- END_INCLUDE(manifest) -->
-
11-06 16:16:26.069: I/Timeline(3200): Timeline: Activity_launch_request time:90722980 intent:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity bnds=[331,983][499,1151] (has extras) } 11-06 16:16:26.073: I/ActivityManager(1815): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity bnds=[331,983][499,1151] (has extras)} from uid 10028 11-06 16:16:26.080: E/ANDR-IOP(571): IOP HAL: Received pkg_name = com.embarcadero.MiracleM pid = -1 11-06 16:16:26.083: W/WindowManager(1815): Attempted to set focus to non-existing app token: Token{704629c ActivityRecord{391b4a5 u0 com.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity t2981}} 11-06 16:16:26.084: D/ActivityTrigger(1815): activityStartTrigger: Activity is Triggerred in full screen ApplicationInfo{4b1ddd2 com.embarcadero.MiracleM} 11-06 16:16:26.085: E/ActivityTrigger(1815): activityStartTrigger: not whiteListedcom.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity/3 11-06 16:16:26.086: D/ActivityTrigger(1815): activityResumeTrigger: The activity in ApplicationInfo{4b1ddd2 com.embarcadero.MiracleM} is now in focus and seems to be in full-screen mode 11-06 16:16:26.086: E/ActivityTrigger(1815): activityResumeTrigger: not whiteListedcom.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity/3 11-06 16:16:26.092: D/ActivityTrigger(1815): activityResumeTrigger: The activity in ApplicationInfo{4b1ddd2 com.embarcadero.MiracleM} is now in focus and seems to be in full-screen mode 11-06 16:16:26.092: E/ActivityTrigger(1815): activityResumeTrigger: not whiteListedcom.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity/3 11-06 16:16:26.104: D/Boost(1815): hostingType=activity, hostingName=com.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity, callerPackage=com.miui.home, isSystem=true, isBoostNeeded=false. 11-06 16:16:26.104: I/ActivityManager(1815): Start proc 24801:com.embarcadero.MiracleM/u0a267 for activity com.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity caller=com.miui.home 11-06 16:16:26.105: D/PowerKeeper.Event(4621): notifyAMProcStart processName: 10267 reason: com.embarcadero.MiracleM, pid:0 11-06 16:16:26.179: D/GameBoosterService(4375): onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.embarcadero.MiracleM', mForegroundUid=10267, mForegroundPid=24801, mLastForegroundPackageName='com.miui.home', mLastForegroundUid=10028, mLastForegroundPid=3200, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=1} 11-06 16:16:26.236: W/ActivityThread(24801): Application com.embarcadero.MiracleM can be debugged on port 8100... 11-06 16:16:26.311: D/AccessibilityManager(24801): AccessibilityManager status: mPackageName = com.embarcadero.MiracleM, mOptimizeEnabled = true, mIsEnabled = false, mIsUiAutomationEnabled = false, mIsInterestedPackage =false 11-06 16:16:26.365: W/linker(24801): "/data/app/com.embarcadero.MiracleM-3N3_yTSwvPTP43Frk1p7rQ==/lib/arm/libMiracleM.so" unused DT entry: type 0xf arg 0x1a702 11-06 16:16:26.913: I/chatty(24801): uid=10267(u0_a267) com.embarcadero.MiracleM identical 1 line 11-06 16:16:28.035: I/CameraService(1042): CameraService::connect call (PID -1 "com.embarcadero.MiracleM", camera ID 0) for HAL version default and Camera API version 1 11-06 16:16:28.036: W/CameraBase(24801): An error occurred while connecting to camera 0: Status(-8): '1: validateClientPermissionsLocked:934: Caller "com.embarcadero.MiracleM" (PID 10267, UID 24801) cannot open camera "0" without camera permission' 11-06 16:16:28.506: I/WindowManager(1815): WIN DEATH: Window{6b72be1 u0 com.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity} 11-06 16:16:28.506: I/ActivityManager(1815): Process com.embarcadero.MiracleM (pid 24801) has died: fore TOP 11-06 16:16:28.507: W/ActivityManager(1815): Force removing ActivityRecord{391b4a5 u0 com.embarcadero.MiracleM/com.embarcadero.firemonkey.FMXNativeActivity t2981}: app died, no saved state 11-06 16:16:28.510: D/PowerKeeper.Event(4621): notifyAMProcDied pacakageName: com.embarcadero.MiracleM, pid:24801 11-06 16:16:28.527: D/GameBoosterService(4375): onGameStatusChange foreground:ForegroundInfo{mForegroundPackageName='com.miui.home', mForegroundUid=10028, mForegroundPid=3200, mLastForegroundPackageName='com.embarcadero.MiracleM', mLastForegroundUid=10267, mLastForegroundPid=24801, mMultiWindowForegroundPackageName='null', mMultiWindowForegroundUid=-1, mFlags=0}
Добрый день.
Не пинайте строго но в логе ничего не понимаю. Подскажите приложение нормально запускалось а потом в какой-то прекрасный момент перестало. причем изменений резких не было в основном касалось только изменения в diseng-time.
Суда по логу падает в момент показа формы но почему не могу понять.
Если есть платные решения(можно обсудить в личке) подсказки пишите.
-
Спасибо за ответы. Тему можно закрывать.
-
Не знаю почему но вот так заработало.
Может кто нибудь прояснить почему.
unit Unit2; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts; type TNotifyEvent = procedure (Sender: TObject) of object; TTapEvent = procedure(Sender: TObject; const Point: TPointF) of object; MyType = class //class(TObject) MyButt:TButton; private fNGP: string; function GetOnClick: TNotifyEvent; procedure SetOnClick(const Value: TNotifyEvent); function GetTapClick: TTapEvent; procedure SetTapClick(const Value: TTapEvent); public Property NGP:string read fNGP; procedure ButtonClick(Sender: TObject); procedure TapClick(Sender: TObject; const Point: TPointF); property OnButtonClick : TNotifyEvent Read GetOnClick Write SetOnClick; property OnTapClick : TTapEvent Read GetTapClick Write SetTapClick; constructor Create(NewId:integer;NewNGP:string); end; type TForm2 = class(TForm) Button1: TButton; VertScrollBox1: TVertScrollBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; myitem:array of MyType; implementation {$R *.fmx} { MyType } procedure MyType.ButtonClick(Sender: TObject); begin ShowMessage((Sender as TButton).Name +' NGP ['+self.fNGP+']'); end; constructor MyType.Create(NewId:integer;NewNGP:string); Var RectForButt:TRectangle; begin fNGP:=NewNGP; RectForButt:= TRectangle.Create(nil); RectForButt.Parent := Form2.VertScrollBox1; RectForButt.Align := TAlignLayout.Top; RectForButt.Margins.Top:=2; RectForButt.Margins.Bottom:=0; RectForButt.Margins.Left:=0; RectForButt.Margins.Right:=0; RectForButt.Stroke.Kind:=TBrushKind.None; RectForButt.Fill.Kind:=TBrushKind.None; RectForButt.Height:=150; RectForButt.HitTest:=false; MyButt:=TButton.Create(Form2); MyButt.Width:=100; MyButt.Parent:=RectForButt; MyButt.HitTest:=true; MyButt.Align := TAlignLayout.Center; MyButt.Text:='Моя кнопка'+IntToSTr(NewId); MyButt.Name:='MyButton'+IntTOSTr(NewId); MyButt.TextSettings.Font.Size:=12; MyButt.OnClick:=self.OnButtonClick; // MyButt.OnTap:=self.OnTapClick; end; function MyType.GetOnClick: TNotifyEvent; begin Result:=self.ButtonClick; end; function MyType.GetTapClick: TTapEvent; begin Result:=self.TapClick; end; procedure MyType.SetOnClick(const Value: TNotifyEvent); begin MyButt.OnClick:=value; end; procedure MyType.SetTapClick(const Value: TTapEvent); begin MyButt.OnTap:=Value; end; procedure MyType.TapClick(Sender: TObject; const Point: TPointF); begin ShowMessage((Sender as TButton).Name +' NGP ['+NGP+']'); end; procedure TForm2.Button1Click(Sender: TObject); begin SetLength(myitem,Length(myitem)+1); myitem[Length(myitem)-1]:=MyType.Create(Random(1000),'ПРОСТОЕ '+IntToStr(Random(100))); end; end.
-
20 минут назад, wamaco сказал:
Потому что под Android используйте onTap, а не onClick
Я конечно извиняюсь но OnClick тоже работает. В приведенном пример как раз есть событие клик на кнопку которое создает кнопки.
И можно привести пример или исправить данный код что бы работало?
-
Добрый день.
Подскажите пожалуйста.
У меня есть класс который рисует кнопки и прочие объекты MyClass и при нажатие на кнопки берет некоторые свойства данного класса.
Вопрос такой почему в Windows срабатывает нажатие и выводит все что нужно а при компиляции под Андройд не происходит ни чего.
Что то я не совсем понимаю процесс работы.
Не судите строго только учусь.
unit Unit2; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts; type TNotifyEvent = procedure (Sender: TObject) of object; MyType = class(TObject) MyButt:TButton; NGP:string; private function GetOnClick: TNotifyEvent; procedure SetOnClick(const Value: TNotifyEvent); public procedure ButtonClick(Sender: TObject); property OnButtonClick : TNotifyEvent Read GetOnClick Write SetOnClick; constructor Create(NewId:integer;NewNGP:string); end; type TForm2 = class(TForm) Button1: TButton; VertScrollBox1: TVertScrollBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.fmx} { MyType } procedure MyType.ButtonClick(Sender: TObject); begin ShowMessage((Sender as TButton).Name+' NGP ['+NGP+']'); end; constructor MyType.Create(NewId:integer;NewNGP:string); Var RectForButt:TRectangle; begin NGP:=NewNGP; RectForButt:= TRectangle.Create(nil); RectForButt.Parent := Form2.VertScrollBox1; RectForButt.Align := TAlignLayout.Top; RectForButt.Margins.Top:=2; RectForButt.Margins.Bottom:=0; RectForButt.Margins.Left:=0; RectForButt.Margins.Right:=0; RectForButt.Stroke.Kind:=TBrushKind.None; RectForButt.Fill.Kind:=TBrushKind.None; RectForButt.Height:=150; RectForButt.HitTest:=false; MyButt:=TButton.Create(Form2); MyButt.Parent:=RectForButt; MyButt.Align := TAlignLayout.Center; MyButt.Text:='Моя кнопка'+IntToSTr(NewId); MyButt.Name:='MyButton'+IntTOSTr(NewId); MyButt.OnClick:=ButtonClick; end; function MyType.GetOnClick: TNotifyEvent; begin Result:=MyButt.OnClick; end; procedure MyType.SetOnClick(const Value: TNotifyEvent); begin MyButt.OnClick:=Value; end; procedure TForm2.Button1Click(Sender: TObject); begin MyType.Create(Random(1000),'ПРОСТОЕ '+IntToStr(Random(100))); MyType.Create(Random(1000),'СЛОЖНОЕ '+IntToStr(Random(100))); end; end.
Спасибо.
-
-
Я так понимаю решения данного вопроса нет. Ну или оно такое простое что ни кто не отвечает.
Пишу что то типа whatsapp, может есть другое решение данного вопроса?
Если кто знает подскажите. Пожалуйста.
-
-
Добрый вечер.
Не подскажите в чем может проблема быть.
Не отображает содержимое на Андройде при повороте на 180 градусов т.е.(RotationAngle:=180).TScrollBox или TPresentedScrollBox и TVertScollBox.
Под Win все Ок.
Delphi XE 10.2 Update 3
Вернуть программу из бекграунда
в Намерения (Intent)
Опубликовано · Изменено пользователем MrAnderson
Я понимаю что это некро-тема, но хотел ответить, так как сам искал такое решение может кому пригодится
Intent := SharedActivity.getIntent; Intent.setAction(TJIntent.JavaClass.ACTION_MAIN); Intent.setAction(TJIntent.JavaClass.ACTION_SCREEN_ON); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_REORDER_TO_FRONT); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_BROUGHT_TO_FRONT); MainActivity.startActivity(Intent);
Не работает в новом обновление Rio 10.3.1
Вот так работает в новом Rio
Intent := MainActivity.getIntent; Intent.setAction(TJIntent.JavaClass.ACTION_SCREEN_ON); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_REORDER_TO_FRONT); MainActivity.startActivity(Intent);