2013-08-28 3 views
4

Вот <uses-feature> и <uses-permission>, указанный в файле манифеста для моего Android приложенияКак проверить конкретные функции с помощью кода?

<uses-feature 
     android:name="android.hardware.telephony" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.location" 
     android:required="false" /> 
    <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.Also этот тег фильтрует наше приложение в Google Play.My приложение не отображалось для некоторых устройств, включая планшеты. У меня есть некоторые сомнения.

  1. Случается что-нибудь, если мы указываем <uses-permission> без использования <uses-feature> Для например: Используйте разрешения CALL_PHONE,MODIFY_PHONE_STATE и т.д. ... без указания функции аппаратного android.hardware.telephony

  2. Мое приложение выпустили следующие приемники, когда нажмите о двух кнопок , Как я могу проверить эти функции из кода?

    андроид: имя = "android.intent.action.NEW_OUTGOING_CALL" действие андроид: имя = "android.intent.action.PHONE_STATE"

Заранее спасибо

+0

проверки этого http://stackoverflow.com/a/12644377/983741 –

ответ

7

(1) Вы необходимо определить как <uses-permission />, так и <uses-feature />, а затем установить для этой функции android:required="false". Например

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-feature android:name="android.hardware.wifi" android:required="false" /> 

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

(2) вы должны использовать метод PackageManager.hasSystemFeature(). Например

PackageManager mgr = context.getPackageManager(); 
    boolean hasTelephony = mgr.hasSystemFeature(PackageManager.FEATURE_TELEPHONY); 
+0

Что происходит, когда я установил требуется = «ложь» для этих функций и не проверить его из кода? Оказывает ли этот код сбой, если функция не найдена? –

+0

Всё зависит от меня. Он выйдет из строя, если на устройстве будет отсутствовать соответствующий ящик или реализация. Если у вас просто есть BroadcastReceiver, тогда он не будет уведомлен, но он не будет разбиваться. –

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