Android中上下文导入的意外关闭

Android中上下文导入的意外关闭,android,android-context,Android,Android Context,我正在尝试使用上下文传输将上下文导入这个android文件。但是,如果我的消息包含“aakash”,则此代码意外终止,并给出错误,如代码后面所示 我该怎么办 public class messagebody extends BroadcastReceiver{ Context mContext; public messagebody(Context context){ this.mContext

我正在尝试使用上下文传输将上下文导入这个android文件。但是,如果我的消息包含“aakash”,则此代码意外终止,并给出错误,如代码后面所示

我该怎么办

    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();