[英]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.