2012-03-01 13 views
1

私は作成している(学習目的の)SMSアプリケーションに関する質問があります。私は活動を閉じるが、まだトーストメッセージを持っていると思いセンドを打った後、私はそれがdeleivered(またはしない)された後にトーストメッセージが表示されるがしたいSMSを送信するにはSMSManagerと保留中の意図

問題があります(この場合)は、私に情報を与えているようです。

私はこれに新しいので、これについてどうやって行くのか分かりません。私がやったことは、情報が来るのを待って、メッセージを設定してから活動を終了することです。

private void sendSMS() { 
    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), PendingIntent.FLAG_NO_CREATE); 
    deliverActivity = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      switch (getResultCode()) { 
       case Activity.RESULT_OK: 
        Toast.makeText(getBaseContext(), "SMS delivered", 
        Toast.LENGTH_LONG).show(); 
        finishActivity(); 
        break; 
       case Activity.RESULT_CANCELED: 
        Toast.makeText(getBaseContext(), "SMS not delivered", 
        Toast.LENGTH_LONG).show(); 
        finishActivity(); 
        break;   

      } 
     } 
    }; 

    registerReceiver(deliverActivity, new IntentFilter(DELIVERED));   

    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(toNo, null, toSend.getText().toString(), deliveredPI, null); 

    ContentValues values = new ContentValues(); 
    values.put("address", toNo); 
    values.put("body", toSend.getText().toString()); 
    this.getContentResolver().insert(Uri.parse("content://sms/sent"), values); 

} 

private void finishActivity() { 
    unregisterReceiver(deliverActivity); 
    Intent intent = new Intent(); 
    setResult(123, intent); 
    finish(); 
} 

これはおそらく別のアクティビティに渡すことさえ可能です。

これはおそらく少し拍子抜けに聞こえるかもしれませんが、私は物事を行う新しい方法を学ぶことができます。だれかが正しい方向に私を向けることができれば素晴らしいでしょう。

ありがとうございます! uは、このリンクから答えを得ることができますhttp://mobiforge.com/developing/story/sms-messaging-android

答えて

0

活動を閉じた後、トーストを表示する例については、この問題を確認する方法があります。 は、 Android: Show toast after finishing application/activity

thisも参照してください。

+0

ありがとうございました –

+0

が見て、トーストが(私はそれを呼び出すように)表示することができますし、私は活動を終了...私はこれを言うことができますからスレッドを開始すると同じですトーストメッセージのために、その後、スレッドがスリープ状態になるまでの時間(ミリ秒) –

関連する問題