2013-08-28 5 views
4

다음은이 태그가 구글 Play.My 우리의 응용 프로그램을 필터링하는 application.Also에 필요한 하드웨어/소프트웨어 기능을 지정하는 데 사용됩니다 내 안드로이드 응용 프로그램 내가 아는코드를 통해 특정 기능을 확인하는 방법은 무엇입니까?

<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" /> 

에 대한 매니페스트 파일에 지정된 <uses-feature><uses-permission>입니다 애플리케이션도 태블릿을 포함한 일부 기기에는 표시되지 않았습니다. 나는 의심이있다. ? 우리가 예를 들어 <uses-feature>를 사용하지 않고 <uses-permission>를 지정하면

  1. 아무것도가 발생합니까 : 하드웨어 기능을 지정하지 않고 ... 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() 메서드를 사용해야합니다. 나는 이러한 기능을 = "false"를 요구 세트 및 코드에서 그것을 확인하지 않은 경우 예를

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

어떻게됩니까? 해당 기능을 찾을 수없는 경우이 코드가 충돌합니까? –

+0

다릅니다. 해당 관리자 또는 구현이 장치에서 누락되면 충돌이 발생합니다. BroadcastReceiver가있는 경우에는 알림을받지 않지만 충돌이 발생하지 않습니다. –