2011-10-20 28 views
1

これはSMSを送信する簡単なコードです。sendTextMessageアンドロイド電話

47: SmsManager sms = SmsManager.getDefault(); 
48: sms.sendTextMessage("12345678901", null, "hello!", null, null); 

このコードは実行できません。 このコードはAndroid 2.1で動作しますが、私の携帯電話Samsung Galaxy IIではNullPointExceptionエラーが発生します。その問題について教えてください。ここにAndroidManifest.xmlコードとエラーログがあります。

<uses-permission android:name="android.permission.SEND_SMS"/> 

FATAL EXCEPTION: main 
java.lang.RuntimeException:Unable to start activity ComponentInfo {ric.FPSProject.FamilyPositionSearch/ric.FPSProject.SinglePos.SinglePosMap}: java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2668) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684) 
    at android.app.ActivityThread.access$2300(ActivityThread.java:126) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:4632) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
    at android.os.Parcel.readException(Parcel.java:1253) 
    at android.os.Parcel.readException(Parcel.java:1235) 
    at com.android.internal.telephony.ISms$Stub$Proxy.sendText(ISms.java:561) 
    at android.telephony.SmsManager.sendTextMessage(SmsManager.java:109) 
    **at ric.FPSProject.SinglePos.SinglePosMap.sendSMS(SinglePosMap.java:48)** 
    at ric.FPSProject.SinglePos.SinglePosMap.initPersonData(SinglePosMap.java:273) 
    at ric.FPSProject.SinglePos.SinglePosMap.onCreate(SinglePosMap.java:134) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2632) 
    ... 11 more 
+0

を私が試しました私のために働いた(私は電話番号を有効な電話番号に置き換えたが)。問題を見つけるのに役立つ、logcat出力からさらに多くの行を貼り付けてください。 –

+0

さて、私は助けてください! –

答えて

4

怒鳴る

String sent = "android.telephony.SmsManager.STATUS_ON_ICC_SENT"; 
PendingIntent piSent = PendingIntent.getBroadcast(smsActivity.this, 0,new Intent(sent), 0); 

sms.sendTextMessage("12345678901", null, "hello!", piSent, null); 

与えられたとして、あなたの第48行に保留中の意図を与えるあなたのMSGの長さは通常のテキストMSGの長さ(すなわちを超えたときにこの問題が発生し、それが動作すると確信しています:)

4

160文字)msgを分割して送信する必要があります。このコードを使用してください。

public static void sendSms(Activity curActivity, String phoneNumber, String msg) { 
SmsManager smsManager = SmsManager.getDefault(); 

ArrayList<String> msgStringArray = smsManager.divideMessage(msg);  

smsManager.sendMultipartTextMessage(phoneNumber, null, msgStringArray, null, null); 
} 
0

SMSメッセージで特殊文字を使用すると、この問題が発生しました。普通の英語の文字に変更すると私にとってうまくいった。

0

ヌル例外がSMSな長さであるあなたがnull例外を取得し、使用して「分割」SMSを送信しようとする場合には、あなたのコード内で

try {}catch(Exception ex) {} 

を使用することがあります。

ArrayList<String> parts = sms.divideMessage(message); 
sms.sendMultipartTextMessage(telephone, null, parts, null, null); 
+0

普通に送信して、ちょうど常に分けて送信することとの間に利点がありますか? – CoderNinja

関連する問題