我是android的新手,请为我解决问题。我想发送消息到多个号码。这些数字将保存在SQLite数据库中。我想将消息发送到数据库表中保存的所有号码。
到目前为止,这是我的代码,它仅向我数据库中的一个号码发送短信。它只会发送到我表中的第一个号码。
private void sendSMS(String message) {
if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.SEND_SMS},
MY_PERMISSION_REQUEST_SEND_SMS);
}else{
SmsManager sms = SmsManager.getDefault();
SQLiteDatabase db = myDB.getWritableDatabase();
Cursor res = db.rawQuery("select * from recipients_tbl", null);
if(res != null && res.moveToFirst()) {
String num = res.getString(1);
sms.sendTextMessage(num, null, message, sentPI, deliveredPI);
}
}
}
答案 0 :(得分:1)
仅将其发送到第一个数字的原因是您没有循环搜索结果。为了使其正常工作,您将需要这样编写代码:
if(res != null){
for(res.moveToFirst(); !res.isAfterLast(); res.moveToNext())
{
String num = res.getString(1);
sms.sendTextMessage(num, null, message, sentPI, deliveredPI);
}
}
答案 1 :(得分:1)
您需要做的就是遍历游标,例如
private void sendSMS(String message) {
if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.SEND_SMS},
MY_PERMISSION_REQUEST_SEND_SMS);
}else{
SmsManager sms = SmsManager.getDefault();
SQLiteDatabase db = myDB.getWritableDatabase();
Cursor res = db.rawQuery("select * from recipients_tbl", null);
while (res.moveToNext()) { //<<<<<<<<<< CHANGED
String num = res.getString(1);
sms.sendTextMessage(num, null, message, sentPI, deliveredPI);
}
res.close();
}
}
if(res.moveToFirst()) .....
比if(res != null && res.moveToFirst()) .....
更好。答案 2 :(得分:1)
首先,改变:
SQLiteDatabase db = myDB.getWritableDatabase();
收件人:
SQLiteDatabase db = myDB.getReadableDatabase();
因为您没有写数据库。
然后,您要做的是遍历每一行:
while(res.moveToNext())
{
String num = res.getString(1);
sms.sendTextMessage(num, null, message, sentPI, deliveredPI);
}
res.close();
您知道,Cursor指向第一行,您必须通过moveToNext()
将光标移至下一行。最后,不要忘记关闭Cursor
。