Задать вопрос

Как добавить в AndroidManifest поддержку планшетов, которые умеют принимать/отправлять СМС, но не умеют звонить?

Здравствуй, уважаемое Хабрасообщество!

Я сделал приложение для Android, которое работает только с СМС и никакие звонки мне не нужны. Для этого я прописал в AndroidManifest следующие строчки:
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>


Указанные разрешения автоматически включают следующее требование к оборудованию:
<uses-feature android:name="android.hardware.telephony" />


Таким образом, получается, что планшеты, у которых есть GSM модуль попадают в категорию неподдерживаемых устройств, хотя смс получать и отправлять они умеют. Правильно ли будет, если я насильно отключу android.hardware.telephony? Например так:
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>
<uses-feature android:name="android.hardware.telephony" android:required="false" />


И что будет на планшетах, которые не умеют отправлять СМС?

Заранее спасибо!
  • Вопрос задан
  • 6960 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@shadowspok
у меня приложение перехватывает получаемые смс и может совершать звонки.
в манифесте прописано:

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />

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

Этот вывод не совсем верен
Подробно это описано в документации
Как гласит эта самая документация, uses-feature является своеобразным фильтром для отображения пользователю, однако приложение может функционировать и без этой функции.
android:required
Boolean value that indicates whether the application requires the feature specified in android:name.
When you declare «android:required=»true" for a feature, you are specifying that the application cannot function, or is not designed to function, when the specified feature is not present on the device.
When you declare «android:required=»false" for a feature, it means that the application prefers to use the feature if present on the device, but that it is designed to function without the specified feature, if necessary.

Главный вопрос, насколько хорошо вы проверяете ошибки
Ответ написан
Комментировать
@grishkaa
Мне кажется, что android.hardware.telephony обозначает именно наличие модуля сотовой связи (не обязательно GSM, может быть и CDMA или что-нибудь ещё более экзотическое), а наличие возможности звонить можно почти наверняка проверить, проверив наличие собственно звонилки — пакета com.android.phone. Кстати, у меня как раз есть планшет с 3G, который умеет слать смски и при этом не умеет звонить, могу на нем посмотреть.
Ответ написан
@legioner1916
Всем привет. У меня asus transformer tf101g. Можно ли его заставить совершать звонки и принимать их? За ранее спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы