2017-07-27 72 views
0

我有一个SQLite表,每个表有不同的电话号码和不同的消息。我想获取每行的ID,以便我的IntentService可以将唯一的SMS发送给每个号码。 这是我做了什么:发送短信给SQLite数据库中的每个联系人

public class NotificationService extends IntentService { 
public NotificationService() { 
    super(NotificationService.class.getSimpleName()); 
} 

@Override 
public void onCreate() { 
    super.onCreate(); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String number = extras.getString(String.valueOf(MessageContract.MessageEntry.COLUMN_PHONE_NUMBER)); 
     String message = extras.getString(String.valueOf(MessageContract.MessageEntry.COLUMN_CODE)); 
     sendMessage(number, message); 
    } 
} 

private void sendMessage(String number, String message) { 
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); 
    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); 

    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(number, null, message, sentPI, deliveredPI); 

} 

这是我的合同类

public final class MessageContract { 

private MessageContract() {} 

public static class MessageEntry implements BaseColumns { 
    public static final String TABLE_NAME = "message"; 
    public static final String COLUMN_CODE = "code"; 
    public static final String COLUMN_PHONE_NUMBER = "phoneNumber"; 
} 
} 

请这方面的帮助。

回答

0

试试这个

Cursor cursor = database.getSavedNumbers(); 
if (cursor.moveToFirst()) 
    { 
do 
    { 
    String message = cursor.getString(0);//Column Message should be on 0th position 
    String number = cursor.getString(1);//Column Number should be on 1st Position 
    SmsManager smsManager = SmsManager.getDefault(); 
    smsManager.sendTextMessage(number, null, message, null, null); 
}while(cursor.hasNext()); 
} 

cursor.close(); 
+0

'Cursor'必须被关闭:) –

+0

谢谢。我得到一个错误hasNext()和getSavedNumber() – Ire