Cómo comprobar la disponibilidad de telefonía y cámara para la versión de SDK <5

La forma estándar de verificar la disponibilidad de hardware de la cámara y la telefonía sólo funciona desde SDK> = 5:

PackageManager pm = this.getPackageManager(); boolean hasTelephony=pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY); boolean hasCamera=pm.hasSystemFeature(PackageManager.FEATURE_CAMERA); 

Mi problema que tengo que ejecutar define la disponibilidad de telefonía y cámara en SDK 3 (Android 1.5)

¿Algunas ideas?

PS Entiendo que Android 1.5 es muy anticuado, pero todavía tengo un montón de clientes que ejecutan estos dispositivos, por lo que tengo que mantener la compatibilidad con ellos.

Bueno, he encontrado la solución – muy extraño, pero está funcionando.

Básicamente el método intenta obtener servicio de telefonía si es nulo – devuelve false, si no es nulo (por ejemplo, para HTC Flyer TelephonyManager no es nulo) método intenta ejecutar PackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) utilizando la reflexión, ya que este método no está disponible Para versiones anteriores de SDK.

Aquí hay un código:

 private Boolean hasTelephony; public boolean hasTelephony() { if(hasTelephony==null) { TelephonyManager tm=(TelephonyManager )this.getSystemService(Context.TELEPHONY_SERVICE); if(tm==null) { hasTelephony=new Boolean(false); return hasTelephony.booleanValue(); } if(this.getSDKVersion() < 5) { hasTelephony=new Boolean(true); return hasTelephony; } PackageManager pm = this.getPackageManager(); Method method=null; if(pm==null) return hasCamera=new Boolean(false); else { try { Class[] parameters=new Class[1]; parameters[0]=String.class; method=pm.getClass().getMethod("hasSystemFeature", parameters); Object[] parm=new Object[1]; parm[0]=new String(PackageManager.FEATURE_TELEPHONY); Object retValue=method.invoke(pm, parm); if(retValue instanceof Boolean) hasTelephony=new Boolean(((Boolean )retValue).booleanValue()); else hasTelephony=new Boolean(false); } catch(Exception e) { hasTelephony=new Boolean(false); } } } return hasTelephony; } 

Más o menos el mismo enfoque es viable para comprobar la disponibilidad de la cámara

  • La aplicación Messenger de Google no adjunta Imagen mientras envía MMS
  • ¿Cómo obtener el número de teléfono de una llamada entrante?
  • ¿Cómo obtengo el estado de una llamada saliente en un teléfono Android?
  • Cómo determinar una llamada realizada a un número de móvil es local o STD O ISD
  • Soporte de difusión celular en Android?
  • Cómo detectar si el dispositivo es capaz de llamar y enviar mensajes
  • Android DDMS: envía llamadas al dispositivo actual
  • Uso de TelephonyManager para obtener SIM CÓDIGO DE PAÍS - ¿Cómo?
  • Detectar qué tarjeta SIM ha recibido el mensaje
  • ¿Cómo saber si estoy conectado correctamente a mi número de salida en Android?
  • ¿Hay alguna forma de terminar una llamada en Android 2.3?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.