簡體   English   中英

應用程序在收到消息時崩潰

[英]App crashes when receiving of message

我有以下代碼,之前我添加了一些代碼來保存收到的短信。

package com.example.smsTest;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SmsReceiver extends BroadcastReceiver {
    private SQLiteAdapter mySQLiteAdapter;
@Override
public void onReceive(Context context, Intent intent) {
    Message message = null;

       Bundle extras = intent.getExtras();
       if (extras == null)
       return;

       Object[] pdus = (Object[]) extras.get("pdus");
       for (int i = 0; i < pdus.length; i++) {
          SmsMessage SMessage = SmsMessage.createFromPdu((byte[]) pdus[i]);
          String sender = SMessage.getOriginatingAddress();
          String body = SMessage.getMessageBody().toString();

          message = mySQLiteAdapter.createMessage(body);

          // A custom Intent that will used as another Broadcast
         Intent in = new Intent("SmsMessage.intent.MAIN").
         putExtra("get_msg", sender+":"+body);

         // To display a Toast whenever there is an SMS.
         Toast.makeText(context,body,Toast.LENGTH_LONG).show();

         //You can place your check conditions here(on the SMS or the sender)            
         //and then send another broadcast 
         context.sendBroadcast(in);

        // This is used to abort the broadcast and can be used to silently
        // process incoming message and prevent it from further being 
        // broadcasted. Avoid this, as this is not the way to program an app.
        this.abortBroadcast();
        }
     }
 }

我添加的導致此崩潰的代碼如下:

private SQLiteAdapter mySQLiteAdapter;
Message message = null;
message = mySQLiteAdapter.createMessage(body);

這是createMessage函數的代碼:

public Message createMessage(String message) {
    String[] columns = new String[]{KEY_ID, KEY_CONTENT};

    ContentValues values = new ContentValues();
    values.put(KEY_CONTENT, message);
    long insertId = sqLiteDatabase.insert(MYDATABASE_TABLE, null,
    values);
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE,
            columns, KEY_ID + " = " + insertId, null,
    null, null, null);
    cursor.moveToFirst();
    Message newMessage = cursorToMessage(cursor);
    cursor.close();
    return newMessage;
}

我不知道錯誤來自哪里。

看起來你沒有實例化mySQLiteAdapter 您必須在訪問它之前進行實例化。

請評論此代碼行,

 Toast.makeText(context,body,Toast.LENGTH_LONG).show();

我認為這將有效,我在后台服務上遇到了與UI操作相同的問題,請提交代碼,或者用Log.d(替換)來記錄信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM