Подтвердить что ты не робот

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);

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

4b9b3361

Ответ 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