0
我打算在我的應用程序中發送短信。我到目前爲止這樣的代碼:如何在android上發送帶有進度的SMS消息?
private void sendMessage(String number, String message){
dlg.setCancelable(false);
dlg.setMessage("Sending...");
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etText.getWindowToken(), 0);
etText.setText("");
dlg.show();
SmsManager sms = SmsManager.getDefault();
Intent sendingIntent = new Intent(Intent.ACTION_SEND);
sendingIntent.putExtra("number", number);
sendingIntent.putExtra("message", message);
PendingIntent sendPI = PendingIntent.getBroadcast(this, 0, sendingIntent, PendingIntent.FLAG_ONE_SHOT);
sms.sendTextMessage(number, null, message, sendPI, null);
}
我的收款人:
public class SMSSenderReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
int resultCode = this.getResultCode();
String number = intent.getExtras().getString("number");
String message = intent.getExtras().getString("message");
ContentValues val = new ContentValues();
val.put("address", number);
val.put("body", message);
switch(resultCode){
case Activity.RESULT_OK:
context.getContentResolver().insert(Uri.parse("content://sms/sent"), val);
if (MessageListActivity.dlg != null){
if (MessageListActivity.dlg.isShowing()){
MessageListActivity.dlg.dismiss();
}
}
}
}
}
在我的方法對我的活動:
SMSSenderReceiver receiver = new SMSSenderReceiver();
@Override
public void onCreate(Bundle b){
this.registerReceiver(receiver, new IntentFilter(Intent.ACTION_SEND));
}
@Override
public void onResume(){
super.onResume();
this.registerReceiver(receiver);
}
@Override
public void onStop(){
super.onStop();
this.unRegisterReceiver(receiver);
}
@Override
public void onPause(){
super.onPause();
this.unRegisterReceiver(receiver);
}
現在的問題是,當我發一條消息我手機屏幕上,它通過關閉對話框並在發送時將郵件放入發送框中,但當我嘗試發送郵件並立即關閉屏幕時它會發送消息,但不會關閉對話框也不會將郵件放入發送的文件夾中。我知道這與活動的生命週期有關,但我不確定如何處理onPause和onResume函數。如果我在電話關閉時沒有取消註冊接收器,那麼我收到一個錯誤,說明接收器已經泄漏了錯誤。有沒有人知道我的手機關閉時接收廣播的方式?或通過清單獲取ACTION_SEND廣播的方法?
您可以嘗試在[onDestroy()]中取消註冊接收器(http://developer.android.com/reference /android/app/Activity.html#onDestroy())? – 2012-07-22 00:43:12
工作!你能說這是一個答案,所以我可以標記它的答案?謝謝! – 2012-07-22 00:55:22
我做到了,不客氣:-) – 2012-07-22 01:03:17