<uses-feature ...>
сообщает Android, что приложение < em>должен требовать эту функцию и не будет работать без нее, поэтому Android не позволяет пользователям устанавливать приложение (фактически, оно даже не будет отображаться в Play Store/Market Place.
Чтобы позволить пользователям, у которых нет этих функций, установить ваше приложение, вам просто нужно добавить параметр android:required="false"
для соответствующих функций. Что вы уже сделали в манифесте, используя этот XML:
<uses-feature android:name="android.hardware.camera" android:required="false"/>
Чтобы определить, есть ли у пользователя эта функция или нет (поскольку теперь она не является обязательной), вы можете использовать Android API. Это вы уже сделали с этим кодом Java:
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
fSupportsGPS = (locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER));
Теперь вы не можете позволить пользователям Android 1.6 и более ранних версий без функций устанавливать приложения, даже если функции помечены как необязательные. Это связано с тем, что версия Android не распознает функцию android:required
, как объясняется в этом ответе.
Еще одна вещь, о которой следует помнить, это то, что некоторые теги <uses-permission ...>
вызывают некоторые неявные требования для разрешения.
Чтобы решить эту проблему, процитируйте документы:
Если вы не хотите, чтобы Google Play выполнял фильтрацию на основе определенной подразумеваемой функции, вы можете отключить это поведение. Для этого объявите функцию явно в элементе и включите атрибут android:required="false". Например, чтобы отключить фильтрацию, основанную на разрешении CAMERA, вы должны объявить функцию, как показано ниже.
<uses-feature android:name="android.hardware.camera" android:required="false" />
Согласно этой странице, <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
подразумевает требование сети. Чтобы отключить это, добавьте это в свой манифест:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
person
Yatharth Agarwal
schedule
15.03.2013