2017-07-27 74 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