2013-04-10 5 views
5

Ich habe bereits einige verwandte Fragen darüber gelesen, aber die meisten von ihnen waren auf Anrufe ausgerichtet, nicht SMS. Was ich bisher gefunden habe ist:Überprüfen Sie, ob ein Telefon SMS senden kann

TelephonyManager manager = (TelephonyManager) context 
     .getSystemService(Context.TELEPHONY_SERVICE); 
if (manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) { 
    // I guess here are devices that are unable to send SMS 
} else { 
    // can send SMS 
} 

Ist das wahr, Geräte mit TelephonyManager.PHONE_TYPE_NONE sind nicht in der Lage SMS zu schicken? Ich verstehe nicht wirklich die Beschreibung von TelephonyManager.PHONE_TYPE_NONE, die "Kein Telefon Radio."

Danke!

+1

Check this out: http: //stackoverflow.com/questions/3814258/what-is-the-procedure-to-detect-if-android-device-has-sms-send-capability –

Antwort

2

Ja mit TelephonyManager.PHONE_TYPE_NONE Sie können keine SMS senden. Zum Senden von SMS ist ein Funknetzwerk erforderlich. Allerdings können Sie einige IP-basierten Messenger wie was app, ebuddy auf sie

, wenn Sie sehen android.hardware.telephony (die Sie verwendet-Funktion Tag in Android-Manifest-Datei angeben, verwendet wird), werden Sie feststellen, senden/lesen/schreiben SMS werden unter dieser Funktion erwähnt.

Galaxy TAB example,Can't make calls still phone type comes as PHONE_TYPE_CDMA, so das Hinzufügen zusätzlicher Check für Zeilennummer wird für solche Fälle benötigt werden, wie

+0

Okay, hab es jetzt, danke! –

+2

Testen Sie die Leitungsnummer nicht, es ist von einigen Netzbetreibern verboten. Mein Telefon mit Vodafone-Netzwerk hat eine leere Leitungsnummer und kann SMS senden. Versuchen Sie, SMS Intent zu machen und zu finden, ob es Anwendungen gibt, die es zu installieren versuchen. – Pihhan

2

Verwenden Sie den folgenden Code in Link oben gezeigt:

Boolean canSendSMS (Context context) 
{ 
PackageManager pm = context.getPackageManager(); 
return (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) || pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) 
}