Перейти к содержанию
Fire Monkey от А до Я
  • 0

Переход на новую модель разрешений


Alex7wrt

Вопрос

Добрый день

Знаю, что с ноября в Google Play можно обновлять приложения только для TargetSDK не ниже 26. Но до этого момента этой функцией я не пользовался, оставляя в Манифесте все по дефолту, то есть и minSDK и targetSDK равны 14.

Понятно, что от этого никуда не уйти, но в связи с этим меня больше всего интересует вопрос, если я обновлю приложение с targetSDK равным 26 или 27, смогут ли это приложение установить новые пользователи?

При загрузке версии в Google Play появляется предупреждение, но из него ответ конкретно на мой вопрос не ясен.

1080568717_.PNG.7a35cc5b277b79c2b9b4f1d40ad99b2e.PNG

На данный момент около 25% пользователей, ежедневно устанавливающих данное приложение,  имеют SDK 22 (Android 5.1) и ниже. И меня интересует, смогут ли такие пользователи устанавливать версию приложения, если я обновлю его до targetSDK 26 или 27?

И также, есть ли разница, если выставить targetSDK 26 или 27?

 

P.S. В данном приложении не используются никакие разрешения. Только доступ в интернет

Изменено пользователем Alex7wrt
Ссылка на комментарий

Рекомендуемые сообщения

  • 1

@Alex7wrt,

конечно смогут. Минимально допустимая версия указывается в minSdkVersion. У меня например во всех приложениях установлено <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />

Ссылка на комментарий
  • 0

Спасибо за ответ.

Правильно ли я вас понял, что ваши приложения с TargetSDK 26 именно устанавливают новые пользователи с Android 5.1 и ниже, а не обновляют уже установленное приложение?
И как насчет TargetSDK 26 или 27 - будет ли разница в этом плане?

Ссылка на комментарий
  • 2

@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}

 

Ссылка на комментарий
  • 0

Если кому-то потребуется, то код для C++, как я сделал

   _di_JActivity activity = TAndroidHelper::Activity;
   TJavaObjectArray__1<_di_JString> *Recipients = new TJavaObjectArray__1<_di_JString>(1);
	Recipients->Items[0] = StringToJString("android.permission.READ_EXTERNAL_STORAGE");
	Recipients->Items[1] = StringToJString("android.permission.WRITE_EXTERNAL_STORAGE");

  activity->requestPermissions(Recipients,0);

 

Ссылка на комментарий
  • 0
В 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

Ссылка на комментарий
  • 0

@MrAnderson,

у меня в проекте используется custom activity вместо стандартного (т.е. в AndroidManifest.template.xml вместо com.embarcadero.firemonkey.FMXNativeActivity указано com.embarcadero.firemonkey.CustomActivity и используется дополнительный jar в качестве реализации).

Ссылка на комментарий
  • 0
5 часов назад, MrAnderson сказал:

Можно по подробнее??


TAndroidHelper.Activity.requestPermissions(
            CreateJavaStringArray([PERMISSION_FILE_READ, PERMISSION_FILE_WRITE]),
            BUTTON_FILE
            );

В этом месте у меня AV выскакивает.

Delphi XE 10.2 Tokyo

Еще раз ссылку на KastriFree дать? 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...