Android.permission.CALL_PHONE для планшетов
Я разрабатываю приложение и в манифесте у меня:
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
Когда я нажимаю кнопку, чтобы выполнить этот код:
Intent intentcall = new Intent();
intentcall.setAction(Intent.ACTION_CALL);
intentcall.setData(Uri.parse("tel:" + phonenumber)); // set the Uri
startActivity(intentcall);
Он отлично работает на телефонах, а на планшетах он появляется с дисплеем, на котором вы можете просмотреть или добавить номер в контакты. Однако, если я сохраню разрешение в манифесте, он недоступен для планшетов на рынке. Как я могу сохранить поведение кода и все еще показывать его на рынке как для планшетов, так и для телефонов?
Ответы
Ответ 1
Относительно "use-feature" и сбоя - проверяете ли вы, что телефония доступна до фактического вызова? Возможно, вам нужно сделать этот дополнительный шаг для случая, когда приложение находится на планшетах. Все, что вы говорите в манифесте, заключается в том, что эта функция не требуется. Вероятно, вы полагаетесь на то, что вы действительно реализуете логику вокруг этого.
Ответ 2
В AndroidManifest вам нужно:
<uses-feature android:name="android.hardware.telephony" android:required="false" />
Разрешение CALL_PHONE
подразумевает, что требуется телефония, но если вы укажете, что это не так, вы не будете отфильтрованы.
Ответ 3
Попробуйте использовать Intent.ACTION_DIAL вместо Intent.ACTION_CALL.
Например:
try {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone_number));
startActivity(intent);
} catch (Exception e) {
//TODO smth
}
И в этом случае вы можете полностью удалить эти теги из AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-feature android:name="android.hardware.telephony" android:required="false" />
Ответ 4
Вместо добавления пользователя с идентификатором ACTION_CALL
измените его на ACTION_INSERT_OR_EDIT.
Вам также понадобятся эти разрешения, а не разрешение CALL_PHONE
:
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
Взгляните на этот родственный вопрос:
не может найти приложение на рынке
Ответ 5
Из документов google:
Объявленные элементы являются только информационными, что означает, что сама система Android не проверяет соответствие поддержки функций на устройстве перед установкой приложения
используется только для игры Google