Android中上下文导入的意外关闭
我正在尝试使用上下文传输将上下文导入这个android文件。但是,如果我的消息包含“aakash”,则此代码意外终止,并给出错误,如代码后面所示 我该怎么办Android中上下文导入的意外关闭,android,android-context,Android,Android Context,我正在尝试使用上下文传输将上下文导入这个android文件。但是,如果我的消息包含“aakash”,则此代码意外终止,并给出错误,如代码后面所示 我该怎么办 public class messagebody extends BroadcastReceiver{ Context mContext; public messagebody(Context context){ this.mContext
public class messagebody extends BroadcastReceiver{
Context mContext;
public messagebody(Context context){
this.mContext = context;
Log.i(TAG, "yayyyy: " );
}
public messagebody(){
}
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Intent recieved: " + intent.getAction());
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
// Toast.makeText(context, "Message recieved: " + messages[0].getMessageBody(), 7000).show();
if(messages[0].getMessageBody().contains("aakash"))
{
/*AudioManager am = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_NORMAL:
//Log.i("MyApp","NORMAL mode");
am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
Toast toast2=Toast.makeText(mContext, "Vibrate", Toast.LENGTH_LONG);
toast2.show();
break;
case AudioManager.RINGER_MODE_VIBRATE:
//Log.i("MyApp","VIBRATE mode");
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
Toast toast1=Toast.makeText(mContext, "Normal", Toast.LENGTH_LONG);
toast1.show();
break; */
Toast toast1=Toast.makeText(mContext, "Normal", Toast.LENGTH_LONG);
toast1.show();
}
}
}
}
}
}
public类messagebody扩展了BroadcastReceiver{
语境;
公共消息体(上下文){
this.mContext=上下文;
Log.i(标签“yayyyy:”);
}
公共信息机构(){
}
私有静态最终字符串SMS_RECEIVED=“android.provider.Telephony.SMS_RECEIVED”;
私有静态最终字符串TAG=“SMSBroadcastReceiver”;
@凌驾
公共void onReceive(上下文、意图){
Log.i(标记“Intent received:+Intent.getAction());
if(intent.getAction().equals(SMS_已接收)){
Bundle=intent.getExtras();
if(bundle!=null){
Object[]pdus=(Object[])bundle.get(“pdus”);
最终SmsMessage[]消息=新SmsMessage[pdus.length];
对于(int i=0;i-1){
//Toast.makeText(上下文,“收到的消息:+消息[0].getMessageBody(),7000.show();
如果(消息[0].getMessageBody()包含(“aakash”))
{
/*AudioManager am=(AudioManager)mContext.getSystemService(Context.AUDIO_服务);
开关(am.getRingerMode()){
case AudioManager.RINGER\u模式\u正常:
//Log.i(“MyApp”、“正常模式”);
am.setRingerMode(AudioManager.RINGER\u模式\u振动);
Toast Toast 2=Toast.makeText(mContext,“振动”,Toast.LENGTH\u LONG);
toast2.show();
打破
case AudioManager.RINGER\u模式\u振动:
//Log.i(“MyApp”,“振动模式”);
am.setRingerMode(AudioManager.RINGER\u模式\u正常);
Toast Toast 1=Toast.makeText(mContext,“正常”,Toast.LENGTH\u LONG);
toast1.show();
中断*/
Toast Toast 1=Toast.makeText(mContext,“正常”,Toast.LENGTH\u LONG);
toast1.show();
}
}
}
}
}
}
错误如下:
11-26 15:03:43.150: E/AndroidRuntime(2056): FATAL EXCEPTION: main
11-26 15:03:43.150: E/AndroidRuntime(2056): java.lang.RuntimeException: Unable to start receiver com.example.messages.messagebody: java.lang.NullPointerException
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2236)
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.app.ActivityThread.access$1500(ActivityThread.java:130)
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1271)
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.os.Looper.loop(Looper.java:137)
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.app.ActivityThread.main(ActivityThread.java:4745)
11-26 15:03:43.150: E/AndroidRuntime(2056): at java.lang.reflect.Method.invokeNative(Native Method)
11-26 15:03:43.150: E/AndroidRuntime(2056): at java.lang.reflect.Method.invoke(Method.java:511)
11-26 15:03:43.150: E/AndroidRuntime(2056): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-26 15:03:43.150: E/AndroidRuntime(2056): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-26 15:03:43.150: E/AndroidRuntime(2056): at dalvik.system.NativeStart.main(Native Method)
11-26 15:03:43.150: E/AndroidRuntime(2056): Caused by: java.lang.NullPointerException
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.widget.Toast.<init>(Toast.java:92)
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.widget.Toast.makeText(Toast.java:238)
11-26 15:03:43.150: E/AndroidRuntime(2056): at com.example.messages.messagebody.onReceive(messagebody.java:68)
11-26 15:03:43.150: E/AndroidRuntime(2056): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2229)
11-26 15:03:43.150:E/AndroidRuntime(2056):致命异常:main
11-26 15:03:43.150:E/AndroidRuntime(2056):java.lang.RuntimeException:无法启动receiver com.example.messages.messagebody:java.lang.NullPointerException
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.app.ActivityThread.handleReceiver(ActivityThread.java:2236)
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.app.ActivityThread.access$1500(ActivityThread.java:130)
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1271)
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.os.Handler.dispatchMessage(Handler.java:99)上
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.os.Looper.loop(Looper.java:137)
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.app.ActivityThread.main(ActivityThread.java:4745)上
11-26 15:03:43.150:E/AndroidRuntime(2056):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-26 15:03:43.150:E/AndroidRuntime(2056):位于java.lang.reflect.Method.invoke(Method.java:511)
11-26 15:03:43.150:E/AndroidRuntime(2056):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-26 15:03:43.150:E/AndroidRuntime(2056):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-26 15:03:43.150:E/AndroidRuntime(2056):在dalvik.system.NativeStart.main(本机方法)
11-26 15:03:43.150:E/AndroidRuntime(2056):由以下原因引起:java.lang.NullPointerException
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.widget.Toast.(Toast.java:92)
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.widget.Toast.makeText(Toast.java:238)上
11-26 15:03:43.150:E/AndroidRuntime(2056):在com.example.messages.messagebody.onReceive(messagebody.java:68)
11-26 15:03:43.150:E/AndroidRuntime(2056):在android.app.ActivityThread.handleReceiver(ActivityThread.java:2229)
当mContext更改为context时,新代码出现空指针异常
package com.example.messages;
import com.example.messages.R;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;
import android.media.AudioManager;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class messagebody extends BroadcastReceiver{
Context mContext;
public messagebody(Context context){
this.mContext = context;
Log.i(TAG, "yayyyy: " );
}
public messagebody(){
}
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Intent recieved: " + intent.getAction());
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
// Toast.makeText(context, "Message recieved: " + messages[0].getMessageBody(), 7000).show();
if(messages[0].getMessageBody().contains("aakash"))
{
Toast toast3=Toast.makeText(context, "Normal", Toast.LENGTH_LONG);
toast3.show();
AudioManager am = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_NORMAL:
//Log.i("MyApp","NORMAL mode");
am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
Toast toast2=Toast.makeText(context, "Vibrate", Toast.LENGTH_LONG);
toast2.show();
break;
case AudioManager.RINGER_MODE_VIBRATE:
//Log.i("MyApp","VIBRATE mode");
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
Toast toast1=Toast.makeText(context, "Normal", Toast.LENGTH_LONG);
toast1.show();
break;
}
}
}
}
}
}
}
package com.example.messages;
导入com.example.messages.R;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.media.AudioManager;
导入android.os.Bundle;
导入android.telephony.sms消息;
导入android.util.Log;
导入android.widget.Toast;
导入android.media.AudioManager;
导入android.media.MediaRecorder;
导入android.os.Bundle;
导入android.os.Environment;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.view.Menu;
导入android.view.view;
导入android.widget.Button;
导入android.widget.Toast;
公共类消息体e
Toast toast1=Toast.makeText(context, "Normal", Toast.LENGTH_LONG);
toast1.show();
Toast toast1=Toast.makeText(mContext, "Normal", Toast.LENGTH_LONG);
toast1.show();