2012-08-17 13 views
8

Volevo disattivare le funzionalità relative a CALL e SMS nella mia applicazione in base alla presenza o meno di hardware SIM. Ora un approccio principianti verso questo controllerà il tipo di telefono utilizzando:Come scoprire se un particolare dispositivo ha SIM Supporto hardware?

if (telephonyManager1.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) 

Se vero, è supportato.

Tutto andava bene fino a quando non ho trovato Sony Tablet S che ha un supporto SIM solo per Data e Messaging. Nessun supporto vocale. Quindi per questo dispositivo ho bisogno di disabilitare solo la funzione CALL, ma continuo con il supporto SMS. La tavoletta Sony restituisce TelephonyManager.PHONE_TYPE_NONE in modo da non poter utilizzare i metodi precedenti. Inoltre,

telephonyManager1.getSimState(); 

restituisce 1 cioè SIM_STATE_ABSENT, che è anche lo stesso in caso di FLYER HTC che non ha il supporto per l'hardware SIM stessa.

Quindi c'è un modo in cui posso venire a sapere se l'hardware SIM è lì (indipendentemente dalla scheda SIM inserita o no)?

+0

quindi il tuo obiettivo finale è sapere se la chiamata è supportata? perché ti importa di sim – nandeesh

+0

Chiamata VOIP tramite WiFi non è supportata? – MSalters

+0

@nandeesh: il mio obiettivo è sapere se sia la chiamata che gli sms sono supportati individualmente. Per essere precisi voglio sapere se c'è uno slot per schede SIM disponibile. – binaryKarmic

risposta

0

Usa

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

Edit:

Provare a utilizzare

TelephonyManager.getLine1Number() 

Se questo restituisce null, allora non dovrete funzione telefonia. Non ho provato darci uno scatto

+1

-controllato su HTC Flyer e Sony Tablet S ... entrambi restituiscono falso :(Sono davvero sorpreso, i documenti dicono, "Funzione per getSystemAvailableFeatures() e hasSystemFeature (String): Il dispositivo ha una radio di telefonia con dati supporto di comunicazione. " questa tavoletta Sony supporta comunque la messaggistica sms. – binaryKarmic

+0

anche se restituisce null questo non mi aiuta a uscire qui ..cause sto ottenendo se CALL è supportato o meno con l'aiuto di TelephonyManager.PHONE_TYPE_NONE .... Cosa ho bisogno è di controllare se SMS è supportato o meno – binaryKarmic