Дополнительные разрешения, чтобы приложение отображалось на всех устройствах и включало дополнительные функции на некоторых устройствах?

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

Пример: скажем, приложение с несколькими функциями и хорошим количеством контента - и оно предоставляет кнопку для вызова компании. Это приятная удобная функция, в отличие от записи количества или копирования и вставки его в приложение для телефона. Однако это не существенно.

Если эта функция используется, и в приложение добавлено разрешение на телефонию, тогда все хорошо и хорошо для телефонов - но ни один планшет не увидит приложение на рынке.

Какое общее решение для этой проблемы?

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

Приложение может программно проверить, доступна ли эта функция и включить ее или отключить в зависимости от устройства. Проблема заключается в том, что если приложение не имеет разрешения, оно будет сбой, если оно попытается использовать эту функцию, и если у него есть разрешение, некоторые устройства не смогут найти приложение в Рынок.

В некоторых случаях может быть возможно полностью исключить ненужные функции из приложения, чтобы избежать проблемы. Это не отличное решение, так как эти функции должны быть "хорошими" для устройств, которые его поддерживают.

Да, я знаю Возможно ли иметь "опционально" разрешения на Android? - аналогичный вопрос. Я надеюсь на более новую информацию и на другие обходные пути, которые нашли люди, если они есть... Каково решение этой проблемы? Есть ли у кого-нибудь другие подходы, кроме перечисленных мной?

Ответ 1

Какое общее решение для этой проблемы?

Для этой конкретной проблемы добавьте <uses-feature android:name="android.hardware.telephony" android:required="false"/> в ваш манифест, чтобы указать, что эта функция является необязательной. Затем вы можете использовать PackageManager и hasSystemFeature(), чтобы определить, имеет ли устройство не требуемую функцию во время выполнения.