2011-03-10 18 views

cevap

24

Bir özelliğin olup olmadığını belirlemek için aşağıdaki işlevini kullanın:

public final static boolean isFeatureAvailable(Context context, String feature) { 
     final PackageManager packageManager = context.getPackageManager(); 
     final FeatureInfo[] featuresList = packageManager.getSystemAvailableFeatures(); 
     for (FeatureInfo f : featuresList) { 
      if (f.name != null && f.name.equals(feature)) { 
       return true; 
      } 
     } 

     return false; 
    } 

kullanımı (yani Etkinlik sınıfından): özelliğini biliyorsanız

if (isFeatureAvailable(this, PackageManager.FEATURE_CAMERA)) { 
     ... 
    } 
+0

Bir android cihaz için mevcut tüm özelliklerin listesini nasıl alabilirim? Karşılaştığım sorun, uygulamanızın Google PlayStore'dan indirirken uyumlu olmaması. Bu yüzden hangi izinlerin/özelliklerin aynı şeyi yapmama izin vermediğini anlayamıyorum. –

+1

@JatinJha ** Uygulamanın görünürlüğünü Google Play ** cihazında belirli özelliklere sahip cihazlarla (örneğin, _flash_, _camera_ vb.) Sınırlamak için, uygulamanızın ** belirli bir özelliği/özelliği desteklemeye bağlı olduğunu duyurmalısınız. ** manifest dosyanıza bir '' etiketi koyarak. –

9

ardından denetlemek istediğiniz Tüm sistem özelliklerini numaralandırmanıza ve aradığınız kişiye karşı kontrol etmeniz gerekmez. API düzey 5'ten beri, önceki yanıtta gösterilen isFeatureAvailable() işleviyle aynı işi yapmak için PackageManager.hasSystemFeature() işlevini kullanabilirsiniz. Örneğin

... Eğer `getSystemAvailableFeatures()` çalıştığımızda ne oldu

PackageManager packageManager = this.getPackageManager(); 

if (packageManager.hasSystemFeature(PackageManager.FEATURE_NFC)) 
    Log.d("TEST", "NFC IS AVAILABLE\n"); 
else 
    Log.d("TEST", "NFC IS *NOT* AVAILABLE\n"); 
İlgili konular