8 votes

Comment savoir si un appareil particulier prend en charge le matériel SIM ?

Je voulais désactiver les fonctions liées aux appels et aux SMS dans mon application selon que le matériel SIM est présent ou non. Une approche de débutant pour cela serait de vérifier le type de téléphone en utilisant :

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

Si c'est le cas, elle est soutenue.

Tout allait bien jusqu'à ce que je tombe sur la Sony Tablet S dont la carte SIM ne supporte que les données et la messagerie. Pas de support vocal. Pour cet appareil, je dois donc désactiver uniquement la fonction APPEL mais continuer à prendre en charge les SMS. La tablette Sony renvoie TelephonyManager.PHONE_TYPE_NONE et je ne peux donc pas utiliser les méthodes ci-dessus. Aussi ,

telephonyManager1.getSimState();

renvoie 1, c'est-à-dire SIM_STATE_ABSENT, ce qui est également le cas pour le HTC FLYER qui ne prend pas en charge le matériel SIM lui-même.

Existe-t-il un moyen de savoir si le matériel SIM est présent (indépendamment de la carte SIM insérée ou non) ?

0voto

nandeesh Points 16095

Utilisez

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

Edita:

Essayez d'utiliser

TelephonyManager.getLine1Number()

Si le résultat est nul, vous n'aurez pas de fonction téléphonique. Je n'ai pas essayé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X