Диалог разрешения при установке приложения для Android

Я разрабатываю игру для Android с помощью Unity3d. Когда я генерирую файл .apk с помощью Unity, а затем устанавливаю приложение на свой телефон, в диалоговом окне установки говорится, что «приложение не требует каких-либо специальных разрешений». Однако в моем манифесте Android у меня есть разрешения на доступ к Интернету и местоположению.

Насколько я понимаю, если targetSdk> 23, разрешение в Интернете воспринимается как обычное разрешение и поэтому не вызывает диалоговое окно разрешения. Однако, как только я запускаю приложение, оно запрашивает доступ к местоположению устройства. Меня это все устраивает, и я полагаю, что так оно и должно работать.

У меня такой вопрос: почему в диалоговом окне установки указано, что приложение не требует каких-либо специальных разрешений? Разве в диалоговом окне установки не следует указывать хотя бы разрешение на размещение?

Мой манифест выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.DiogoMelo.Exergame" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal">
  <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:isGame="true" android:banner="@drawable/app_banner">
    <activity android:name="com.yusufolokoba.pedometer.PedometerActivity" android:label="@string/app_name" android:screenOrientation="sensorLandscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density">
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
      </intent-filter>
    </activity>
    <meta-data android:name="unity.build-id" android:value="fe7aacd9-9aed-4446-a3d2-45a1f1474bda" />
    <meta-data android:name="unity.splash-mode" android:value="0" />
    <meta-data android:name="unity.splash-enable" android:value="True" />
    <meta-data android:name="android.max_aspect" android:value="2.1" />
  </application>
  <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="25" />
  <uses-feature android:glEsVersion="0x00020000" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-feature android:name="android.hardware.location.gps" android:required="false" />
  <uses-feature android:name="android.hardware.location" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
</manifest>

person kyrers    schedule 23.05.2018    source источник
comment
Но разрешение на местоположение != разрешение на доступ в Интернет. Для разрешения местоположения требуется, чтобы вы также запрашивали его во время выполнения   -  person Programmer    schedule 23.05.2018
comment
И он запрашивает, когда я открываю приложение. Но правильно ли, что в диалоговом окне установки не указано никаких специальных разрешений?   -  person kyrers    schedule 23.05.2018
comment
Я не могу на это ответить, потому что вы не показали, как выглядит ваш Манифест. Ответ на этот вопрос возможен только тогда, когда я увижу Манифест.   -  person Programmer    schedule 23.05.2018
comment
Я только что отредактировал свой вопрос и опубликовал свой манифест. Спасибо   -  person kyrers    schedule 23.05.2018
comment
Ответ на вопрос во втором комментарии - нет. ИНТЕРНЕТ - это нормальное разрешение, и здесь нет специальных разрешений, но после добавления ACCESS_FINE_LOCATION это сообщение появляется неверно. Вы впервые открыли приложение? Вы переустанавливали приложение?   -  person Programmer    schedule 23.05.2018
comment
В первый раз, когда я открываю приложение, оно запрашивает доступ к местоположению, если я отказываюсь, когда я снова открываю приложение, оно запрашивает снова. Что касается переустановки, я делал это несколько раз, но результат всегда один и тот же. Никаких специальных разрешений не требуется при установке, а затем он запрашивает доступ к местоположению при открытии.   -  person kyrers    schedule 23.05.2018
comment
Я считаю, что вы видите Никаких специальных разрешений, потому что вы уже установили приложение раньше. Возможно, я ошибаюсь, но можете ли вы изменить имя пакета, собрать и установить приложение и посмотреть, по-прежнему ли вы получаете это сообщение при первом запуске?   -  person Programmer    schedule 23.05.2018
comment
Я просто впервые попробовал его на другом телефоне, и он говорит то же самое. Однако после дополнительных исследований я нашел эту ссылку, которая ведет мне поверить, что это то, что должно произойти.   -  person kyrers    schedule 23.05.2018
comment
Да, но это сообщение вводит в заблуждение людей, которые загрузят приложение. Это не имеет смысла   -  person Programmer    schedule 23.05.2018


Ответы (2)


разрешения были сильно изменены в android sdk 23, прежде чем все разрешения должны были быть предоставлены во время установки. Начиная с 23, разрешения запрашиваются только во время выполнения, в идеале - только при необходимости. Я думаю, что с Unity разрешения всегда запрашиваются напрямую при первом запуске, чтобы упростить задачу.

person friday    schedule 23.05.2018
comment
Итак, независимо от того, какие разрешения мне требуются, в диалоговом окне установки всегда будет указано, что приложение не требует специальных разрешений? Даже если он запрашивает у пользователя разрешение при запуске приложения? - person kyrers; 23.05.2018
comment
Да потому, что на этом этапе (время установки) они не требуются. В соответствии с руководящими принципами Android вы должны запрашивать разрешение у пользователя только тогда, когда оно вам действительно нужно, скажем, для функции определения местоположения X вашего приложения. Пользовательское приложение не требует разрешения, пока пользователю не нужна функция X вашего приложения. Конечно, эта логика имеет меньше смысла, когда разрешения запрашиваются при запуске приложения, но это не предполагаемый путь. Хотя с единством я думаю, что это нормальный путь. - person friday; 24.05.2018

Наконец-то у меня появилось время протестировать на телефоне под управлением Android 5.1, и в диалоговом окне установки отображаются необходимые разрешения. Так что проблем нет, это просто зависит от запущенной версии Android.

person kyrers    schedule 24.05.2018