gpt4 book ai didi

java - 如何在Android上发送带有进度的短信?

转载 作者:行者123 更新时间:2023-12-02 07:41:01 25 4
gpt4 key购买 nike

我计划在我的应用程序中发送短信。到目前为止我有这个代码:

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();
}
}

}
}

}

在我的 Activity 方法中:

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);
}

现在的问题是,当我在手机屏幕打开的情况下发送消息时,通过关闭对话框并将消息放入发送框中,效果很好,但是当我尝试发送消息并立即打开时在我的屏幕之外,它会发送消息,但不会关闭对话框,也不会将消息放入已发送的文件夹中。我知道这与 Activity 的生命周期有关,但我不确定如何处理 onPause 和 onResume 函数。如果我在手机关闭时不取消注册接收器,则会收到接收器已泄漏错误的错误。有谁知道手机关机时接收广播的方法吗?或者通过 list 获取 ACTION_SEND 广播的方法?

最佳答案

关闭屏幕总会调用onStop() ,但不包括 onDestroy() 。如果系统丢失内存,可以调用 onDestroy()...我认为您可以在 onDestroy() 中取消注册接收器...

关于java - 如何在Android上发送带有进度的短信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com