Перейти к содержанию
  • Регистрация

IgorK11

Пользователи
  • Публикаций

    6
  • Зарегистрирован

  • Посещение

Информация о IgorK11

  • Звание
    Новичок
  1. Про подводные камни разных кодировок в TEncoding.Default на win/android забыли. Код выше не будет работать если закодировать на одной ос и раскодировать на другой, немного подправил, еще есть расхождение кода символа перевода строки и соответственно разной длины передаваемого результата кодирования с разных OS, но пока проблем в тестировании не возникало: function IntEncode2(S, pwd: String): String; var i, iimax: integer; B, BPwd, Bls: TBytes; begin {$IF NOT defined(MSWINDOWS)} S:= Utf8ToAnsi(S); {$ENDIF} B:= TEncoding.ANSI.GetBytes(S); BPwd:= TEncoding.ANSI.GetBytes(pwd); iimax:= High(BPwd); for i:= Low(B) to High(B) do begin B[i]:= B[i] Xor BPwd[i Mod iimax]; end; result:= TNetEncoding.Base64.EncodeBytesToString(B); end; pwd передается уже в md5 При декодировании использую result:= TEncoding.ANSI.GetString(B);
  2. Так? function IntEncode(S, pwd: String): String; var i, iimax: integer; B, BPwd: TBytes; begin B:= TEncoding.Default.GetBytes(S); BPwd:= TEncoding.Default.GetBytes(System.Hash.THashMD5.GetHashString(pwd)); iimax:= High(BPwd); for i:= Low(B) to High(B) do begin B[i]:= B[i] Xor BPwd[i Mod iimax]; end; result:= TNetEncoding.Base64.EncodeBytesToString(B); end; Чайниковский вопрос, как проще добавить в начало TBytes другой TBytes?
  3. Хочу использовать свой алгоритм в приложении, какие могут быть подводные камни потом в работе? Пакеты потом будут по HTTP ходить. Расшифровка на php. function IntEncode(S, pwd: String): String; var i, iimax: integer; SS, SSS, Sln : String; begin pwd:=System.Hash.THashMD5.GetHashString(pwd); SS:=''; iimax:= Length(pwd); {$IFDEF ANDROID} for i:= 0 to Length(S)-1 do begin {$ELSE} for i:= 1 to Length(S) do begin {$ENDIF} SS:=SS + Chr(Ord(S[i]) Xor Ord(pwd[i Mod iimax])); end; result:= TNetEncoding.Base64.Encode(SS); end;
  4. манифест <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> не работает, FPermissionBAT:= JStringToString(TJManifest_permission.JavaClass.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); PermissionsService.RequestPermissions([FPermissionBAT], PermissionResult, PermissionDisplay); не работает, кстати если использовать для теста права на CAMERA вместо REQUEST_IGNORE_BATTERY_OPTIMIZATIONS - работает LIntent:= TJIntent.Create; LIntent:= TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); LIntent.setData(StrToJURI('package:IAApp')); TAndroidHelper.Activity.startActivity(LIntent); Ошибка: android.content.ActivityNotFoundException: No Activity found to handle intent. без LIntent.setData(StrToJURI('package:IAApp')); открывается ОптимизацияРасхода но приложений/служб там столько что пользователь никогда не полезет искать мое. Не так передаю имя приложения?
  5. Дело немного сдвинулось. Если на S9 в Настройки-Приложение-[МоеПриложение]-Батарея-ОптимизацияРасхода-Все оно же Настройки-Приложения-...-ОсобыеПраваДоступа-ОптимизацияРасхода-Все убрать оптимизацию с своего приложения, служба не закрывается и idTCPClient кстати не засыпает. на A5 служба работает как надо, но idTCPClient засыпает после отключения телефона в промежутке от 3 до 5 минут, а после включения телефона просыпается и продолжает отсылать трафик, делать при этом ничего не нужно. Вопрос остается открытым, что добавить в манифест что бы при установке не ставилась "оптимизация расхода" на мое приложение?
  6. Получилось сделать на A6 (android7), но samsung S9 (android9) упорно удаляет сервис. В app: в сервисе: Так же при выключенном телефоне не ратает idTCPClient, точнее работает но иногда выкидывает ошибки. Есть идеи как побороть 9 андроид? Может в манифест чего добавить что бы 9ка не закрывала службу?
×
×
  • Создать...