Android 将消息正文保存到SQLite数据库
我收到一个号码的信息。格式如下 “LAT:14.471590长:120.984222电池:35” 我试图做的是通过冒号(:)拆分消息体。每当我收到一条消息,应用程序就会为细节敬酒。现在,我想将这些数据传递到SQLiteDatabase 这是我为SmsReceiver类编写的代码:Android 将消息正文保存到SQLite数据库,android,sqlite,Android,Sqlite,我收到一个号码的信息。格式如下 “LAT:14.471590长:120.984222电池:35” 我试图做的是通过冒号(:)拆分消息体。每当我收到一条消息,应用程序就会为细节敬酒。现在,我想将这些数据传递到SQLiteDatabase 这是我为SmsReceiver类编写的代码: public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if(bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
String senderNumber = null;
for (int i = 0; i < pdus.length; i++) {
SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdus[i]);
senderNumber = sms.getOriginatingAddress();
String message = sms.getMessageBody();
// String[] separatedSMS = message.split(":");
Toast.makeText(context, senderNumber + message, Toast.LENGTH_SHORT).show();
sendSMStoDatabase(sms, context);
}
}
}
public void sendSMStoDatabase(SmsMessage sms, Context context) {
DBHelper mydb = new DBHelper(context);
SQLiteDatabase db = mydb.getWritableDatabase();
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
String message = sms.getMessageBody();
String[] separatedSMS = message.split(":");
ContentValues values = new ContentValues();
values.put("date", mydate);
values.put("lat", separatedSMS[1]);
values.put("long", separatedSMS[3]);
values.put("battery", separatedSMS[5]);
db.insert("locationDetailModel",null,values);
}
公共类SmsReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
Bundle=intent.getExtras();
if(bundle!=null){
Object[]pdus=(Object[])bundle.get(“pdus”);
字符串senderNumber=null;
对于(int i=0;i
我收到一个错误。日志显示“ArrayIndexOutOfBoundException”length=4 index=5。每当我注释出值时,put(“电池”,separatedSMS[5]);它不会显示任何错误,但不会插入到我的数据库中。如果将空间分割为delimeter,而不是
”,则您的代码可以工作:
试试这个:
String[] separatedSMS = message.split("\\s+");
它将创建此阵列:
["LAT:","14.471590","LONG:","120.984222","BATTERY:","35"]
["LAT"," 14.471590 LONG"," 120.984222 BATTERY"," 35"]
您可以在索引1
、3
和5
中获取项目正如现在一样,您的代码创建了以下数组:
["LAT:","14.471590","LONG:","120.984222","BATTERY:","35"]
["LAT"," 14.471590 LONG"," 120.984222 BATTERY"," 35"]
并且所需的值不会与其他字符串分开