2013-08-28 5 views
2

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

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="xxxx.xxxxxx.xxxxxxx" 
    android:installLocation="internalOnly" 
    android:versionCode="1" 
    android:versionName="1.0" > 
    <uses-feature 
     android:name="android.hardware.telephony" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.location" 
     android:required="false" /> 
    <supports-screens 
     android:anyDensity="true" 
     android:largeScreens="true" 
     android:normalScreens="true" 
     android:smallScreens="true" 
     android:xlargeScreens="true" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <application> 
     </activities> 
     </services> 
     <receiver android:name="xxxx.xxxx.ReceiverOutGoingCall" > 
      <intent-filter> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
     </receiver> 
     <receiver android:name="xxxx.xxxx.ReceiverIncomingCall" > 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

Это приложение не отображается для некоторых устройств в Google play.After долгое время поиска я понял, что это связано с <uses-feature> требований к оборудованию. Нет, я хочу удалить необходимые аппаратные функции для телефонных звонков из манифеста и проверить их из кода.

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

Спасибо заранее

ответ

2

Некоторые требования к автоматическому отключению функций.

Это то, что говорит API Guides: "For any of the permissions below, you can disable filtering based on the implied feature by explicitly declaring the implied feature explicitly, in a element, with an android:required="false" attribute."

Ваши права impliy функций android.hardware.wifi, android.hardware.location.network, android.hardware.location.gps, android.hardware.location и android.hardware.telephony.

Вы устанавливаете только два из них в android:required="false". Поэтому вы можете попытаться также установить другие разрешения.

0

Попробуйте этот код, чтобы проверить функциональность телефона доступна:

public static boolean isTablet(Context context) { 
     TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
     return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE; 
} 
+0

birdy, я сказал пример Tablets в качестве примера. Я хочу, чтобы мое приложение работало/показывалось для всего устройства, даже если у них нет необходимого оборудования для совершения вызовов. –

1

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

+0

OrhanC1, я сказал пример Tablets в качестве примера. Я хочу сделать свою работу/показ приложения для всех устройств, даже если у них нет необходимого оборудования для совершения вызовов. –

+0

Я понимаю. Я также использовал планшеты. Если вы хотите, чтобы ваше приложение отображалось для вещей, которые не могут использовать определенные разрешения, вам нужно приложение, которое не использует эти разрешения. – OrhanC1

+0

Есть ли проблемы, если я удаляю из манифеста? –

Смежные вопросы