当前位置: 首页 > 面试题库 >

发送短信之前显示确认对话框

松雅昶
2023-03-14
问题内容

我是Android的新手,已经完全绑定了我的应用程序,但是现在我希望对其进行更改。

当有人发送短信时,我想显示一个确认对话框,以发送短信询问是否发送短信。我必须为其编写一个源代码,并使其能够正常工作,但是如果用户未单击“是”或“取消”,该对话框将消失,但希望它仍将显示,直到用户未单击“是”或“我”为止,取消按钮。

如何解决?

public void send_SMS( final String message)
    { 
    try{


        AlertDialog.Builder dialog = new AlertDialog.Builder(ctx);
        dialog.setTitle("Send SMS");
        dialog.setMessage("Are U sure want to Send SMS");
        dialog.setCancelable(true);
        dialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                sentpi = PendingIntent.getBroadcast(ctx, 0, new Intent(SENT),0);
                delpi = PendingIntent.getBroadcast(ctx, 0, new Intent(DELIVERED), 0);//
                String id = message.substring(3, 4);
                int msgId = Integer.valueOf(id, 16).intValue();

                if(dba.IsConOpenOrClose()==false)
                    dba.Open();
                if(ConstantClass.SelectCord.equals("All")){
                    if(msgId == 3 || msgId == 9){   
                    devId = message.substring(4, 20);
                    ConstantClass.CurrentId = devId;
                    strSql = new String("SELECT * FROM "+ ConstantClass.dbName[2] + " WHERE " + DataBaseAdapter.Key_DevID + " = ?");
                    cur = dba.ExecuteSelect(strSql, devId);
                    if(cur!=null)
                        cur.moveToFirst();
                    int cordId = cur.getInt(cur.getColumnIndex(DataBaseAdapter.Key_DevCoordId));
                    phoneNumber = dba.getSendSmsMobileNo(cordId);
                    dba.prcUpdateOrClean(devId, 1);
                    cur.close();
                    }
                }else{
                    phoneNumber = dba.getSendSmsMobileNo(dba.CurrentWorkingCoordinator(DataBaseAdapter.Key_SendCoord, 1));
                /*********now getting the Field smsProcess Update for particular devices ********************/
                if(msgId == 3 || msgId == 9 || msgId == 7){
                    devId = message.substring(4, 20);
                    if(dba.IsConOpenOrClose()==false)
                        dba.Open();
                    ConstantClass.CurrentId = devId;
                    dba.prcUpdateOrClean(devId, 1);

                }else if(msgId == 15 || msgId == 13 || msgId == 11 || msgId == 1){
                    if (dba.IsConOpenOrClose()==false)
                        dba.Open();
                    phoneNumber = dba.getSendSmsMobileNo(dba.CurrentWorkingCoordinator(DataBaseAdapter.Key_SendCoord, 1));
                    if(phoneNumber.length()==11){
                        pdNo = phoneNumber.substring(1, 11);
                    }else{
                        pdNo = phoneNumber.substring(0, 10);
                    }
                    devId = "000000" + pdNo;
                    ConstantClass.CurrentId = devId;                
                    dba.prcUpdateOrClean(devId, 1);

                }
                }
                  SmsManager sms = SmsManager.getDefault();
                  if(phoneNumber!=null){
                      sms.sendTextMessage(phoneNumber, null, message.toUpperCase(), sentpi, delpi); 
                  }else{
                      throw new java.lang.NullPointerException() ;
                  }               
            }
        });
        dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.cancel();
            }
        });
        AlertDialog dlg = dialog.create();
        dlg.show();       
    }catch(Throwable e){
        dlg = new ExceptionDialog(this.ctx,"Sending SMS",e.getMessage());
        dlg.show();
    }   
}
public BroadcastReceiver sms_send = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context,Intent intent){
        String Info = "Send Info:";
        switch(getResultCode()){
        case Activity.RESULT_OK:
            Info += "Sms Send Successfull";
            break;
        case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
            Info += "Sms Sending faild : genric faliure";
            break;
        case SmsManager.RESULT_ERROR_NO_SERVICE:
            Info += "Sending failed due to no Service";
            break;
        case SmsManager.RESULT_ERROR_NULL_PDU:
            Info += "Send failed : Null PDU";
            break;
        case SmsManager.RESULT_ERROR_RADIO_OFF:
            Info += "Send failed: Radio Service OFF";
            break;
        }
         Toast.makeText(ctx, Info, Toast.LENGTH_SHORT).show();
    }
};
public BroadcastReceiver sms_delivered = new BroadcastReceiver(){
    @Override 
    public void onReceive(Context context, Intent intent){
        String Info = "SMS Delivered :";
        switch(getResultCode()){
        case Activity.RESULT_OK:
            Info += "Sms Deliverd";
            break;
        case Activity.RESULT_CANCELED:
            Info += "Sms not Delivered";
            break;
        }
        Toast.makeText(ctx, Info, Toast.LENGTH_SHORT).show();
    }
};
public IntentFilter getSentIntentFilter(){
    return new IntentFilter(SENT);      
}
public IntentFilter getDeliveredFilter(){
    return new IntentFilter(DELIVERED);
}
/*private void reThrow(MyException ex){
    if(ex.nullPointerException instanceof NullPointerException  ){

    }
}
private class MyException extends Exception{
    public Exception nullPointerException;
    public MyException (){}
    public MyException(Exception NullPointerException){
        this.nullPointerException = NullPointerException;       
    }
}*/
}

问题答案:
dialog.setCancelable(true); should be like  dialog.setCancelable(false);

当用户按下返回按钮时,它可以防止关闭警报对话框:)



 类似资料:
  • 问题内容: 我已经编写了一个函数,希望在提交表单之前显示确认消息。我应该如何添加我的条件。下面是我的代码。 问题答案: 解决方案是使用ajax属性。 beforeSend是发送之前的请求前回调函数.beforeSend函数中返回false将取消请求。 AJAX

  • 我的应用程序通过SmsManager.sendMultipartTextMessage发送短信,然后通知服务器短信发送的状态。 一切正常,但Yota操作员有问题。短信不会发送到 MTS 运营商的手机。Yota运营商的员工声称MTS运营商阻止接收来自Yota的消息。 这不是我们的问题,但Android系统说,这样的短信成功交付。我们无法从其他手机重新发送此类短信,因为我们的系统认为它们已经成功发送。

  • 问题内容: 我想获得有关单击删除的 确认消息 (可能是按钮或图像)。如果用户选择“ ”,则删除完成;否则,如果单击“ ”,则什么也不会发生。 当单击按钮时,我尝试回显此内容,但是回显内容会使我的输入框和文本框失去样式和设计。 问题答案: 在按钮事件中编写以下代码:

  • 本文向大家介绍Twilio 发送短信,包括了Twilio 发送短信的使用技巧和注意事项,需要的朋友参考一下 示例 要使用Twilio和Python发送您的第一条SMS,您只需要Twilio-Python帮助程序库即可开始。            

  • 问题内容: 我希望此链接具有一个JavaScript对话框,询问用户“ 您确定吗? 是/否 ”。 如果用户单击“是”,则链接应该加载,如果“否”,则什么也不会发生。 我知道如何通过运行返回或的函数以表格形式进行操作。但是,我该如何使用链接呢? 问题答案: 内联事件处理程序 以最简单的方式,您可以在内联处理程序中使用该函数。 高级事件处理 但是通常情况下,您希望将HTML和Javascript分开,