2013-08-28 59 views
4

這裏是清單文件我的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所需的硬件/軟件功能指定的<uses-feature><uses-permission>這個標籤過濾我們在谷歌Play.My應用應用程序也未顯示某些設備,包括平板電腦。我有些疑惑。 ?

  1. ,如果我們不使用<uses-feature>指定<uses-permission>對於如做任何事情發生:使用權限CALL_PHONE,MODIFY_PHONE_STATE等等,而無需指定硬件功能android.hardware.telephony

  2. 我的應用程序解僱以下時,接收器點擊o的兩個按鈕。 如何從代碼檢查這些功能?

    機器人:名字= 「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

當設置所需的I =「假」這些功能並沒有從代碼檢查,會發生什麼?如果找不到該功能,此代碼是否會崩潰? –

+0

這取決於。如果設備上缺少相應的管理器或實施,它將會崩潰。如果你只有一個BroadcastReceiver,那麼它將不會被通知,但它也不會崩潰。 –

相關問題