java-Textlocal API仅将SMS发送给一个用户,而不发送给其他用户

java-Textlocal API仅将SMS发送给一个用户,而不发送给其他用户,第1张

概述我正在做一个考勤应用程序,用于存储学生的出勤率,我想偶尔将他们的出勤率发送给他们的父母.所以问题是当我从Firebase数据库中检索所有学生的姓名,百分比,电话号码并使用Textlocal API向他们发送SMS时,它仅向一个用户发送SMS,而其余用户则不发送.我很高兴有人帮助我.提前致谢.DatabaseReference databaseReferenc

我正在做一个考勤应用程序,用于存储学生的出勤率,我想偶尔将他们的出勤率发送给他们的父母.所以问题是当我从Firebase数据库中检索所有学生的姓名,百分比,电话号码并使用Textlocal API向他们发送SMS时,它仅向一个用户发送SMS,而其余用户则不发送.我很高兴有人帮助我.提前致谢.

DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference("Students");                    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {                        @OverrIDe                        public voID onDataChange(@NonNull DataSnapshot dataSnapshot) {                            for (final DataSnapshot dataSnapshot1:dataSnapshot.getChildren()){                                        Student student=dataSnapshot1.getValue(Student.class);                                        final String name=student.getname();                                        final String phone=student.getPhone();                                        final String reg=student.getReg();                                        DatabaseReference databaseReference1=FirebaseDatabase.getInstance().getReference("Count");                                        databaseReference1.child(reg).addListenerForSingleValueEvent(new ValueEventListener() {                                            @OverrIDe                                            public voID onDataChange(@NonNull DataSnapshot dataSnapshot) {                                                if (dataSnapshot.exists()){                                                    int presentPeriods=dataSnapshot.getValue(int.class);                                                    int totalPeriods=totalWorkingDays*7;                                                    float percent=(float)presentPeriods/(float)totalPeriods*100;                                                    int nPrecent=(int)percent;                                                    sendSMS(name,phone,reg,nPrecent);                                                }                                                else {                                                    int percent=0;                                                    sendSMS(name,percent);                                                }                                            }                                            @OverrIDe                                            public voID onCancelled(@NonNull DatabaseError databaseError) {                                            }                                        });                            }                        }                        @OverrIDe                        public voID onCancelled(@NonNull DatabaseError databaseError) {                        }                    });private voID sendSMS(String name,String phone,String reg,int percent) {    if (networkAvailable()){        Toast.makeText(this,"Sending alerts...",Toast.LENGTH_SHORT).show();        System.out.println("To: "+phone.replace("+91","")+" / "+"Your ward,"+name+" with Register Number "+reg.replace("R","")+" is having Attendance percentage of "+percent+" as on "+new SimpleDateFormat("dd-MM-yyyy",Locale.getDefault()).format(new Date()));        String out="Your ward,Locale.getDefault()).format(new Date());        String toNumber=phone.replace("+91","");        try {            // Construct data            String APIKey = "APIkey=" + "XXXXXXXXXXX";            String message = "&message=" + out;            String sender = "&sender=" + "TXTLCL";            String numbers = "&numbers=" + toNumber;            // Send data            httpURLConnection conn = (httpURLConnection) new URL("https://API.textlocal.in/send/?").openConnection();            String data = APIKey + numbers + message + sender;            conn.setDoOutput(true);            conn.setRequestMethod("POST");            conn.setRequestProperty("Content-Length",Integer.toString(data.length()));            conn.getoutputStream().write(data.getBytes("UTF-8"));            final BufferedReader rd = new BufferedReader(new inputStreamReader(conn.getinputStream()));            final StringBuffer stringBuffer = new StringBuffer();            String line;            while ((line = rd.readline()) != null) {                stringBuffer.append(line);            }            rd.close();            Toast.makeText(this,stringBuffer.toString(),Toast.LENGTH_SHORT).show();        } catch (Exception e) {            System.out.println("Error SMS "+e);            Toast.makeText(this,"Error: "+e.toString(),Toast.LENGTH_SHORT).show();        }    }    else {        Toast.makeText(this,"No Internet Connection",Toast.LENGTH_SHORT).show();    }}@H_301_8@最佳答案触发databaseReference1.child(reg).addListenerForSingleValueEvent()时,电话已设置为上一个学生对象值.因此,无论何时触发databaseReference1侦听器,短信都会发送到列表中的最后一个电话值.

相应地修改逻辑.

总结

以上是内存溢出为你收集整理的java-Textlocal API仅将SMS发送给一个用户,而不发送给其他用户 全部内容,希望文章能够帮你解决java-Textlocal API仅将SMS发送给一个用户,而不发送给其他用户 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1144996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存