Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将消息正文保存到SQLite数据库_Android_Sqlite - Fatal编程技术网

Android 将消息正文保存到SQLite数据库

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

我收到一个号码的信息。格式如下

“LAT:14.471590长:120.984222电池:35”

我试图做的是通过冒号(:)拆分消息体。每当我收到一条消息,应用程序就会为细节敬酒。现在,我想将这些数据传递到SQLiteDatabase

这是我为SmsReceiver类编写的代码:

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"]
并且所需的值不会与其他字符串分开