intent.getAction(Intent.ACTION_SCREEN_OFF)和intent.getStringExtra(TelephonyManager.EXTRA_STATE)

时间:2014-12-24 11:40:53

标签: android broadcastreceiver

我正在尝试为动作屏幕和来电启动不同的活动。但广播接收器显示错误和崩溃。不知道为什么会出现这样的错误。我的广播接收器是:

public class lockscreenBroadcast extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
        {
            Intent intent2 = new Intent(context, Lockscreen.class);
            intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent2);
        }
        Log.i("TAG", ""+intent.getAction());
        String call_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
        if(call_state.equals("RINGING") && intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
        {
            Intent intent3 = new Intent(context, Phone_call.class);
            intent3.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent3);
        }
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF) || intent.getAction().equals(Intent.ACTION_SCREEN_ON))
        {
            Intent intent2 = new Intent(context, Lockscreen.class);
            intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent2.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME);
            context.startActivity(intent2);
        }
    }
}

我的服务代码是:

public class BroadcastService extends Service{
    BroadcastReceiver receive = new lockscreenBroadcast();

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate()
    {
        Log.i("TAG", "service");
        KeyguardManager.KeyguardLock k1;

         //getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

         KeyguardManager km =(KeyguardManager)getSystemService(KEYGUARD_SERVICE);
         k1= km.newKeyguardLock("IN");
         k1.disableKeyguard();
        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
        IntentFilter filter2 = new IntentFilter(Intent.ACTION_SCREEN_ON);
        IntentFilter filter3 = new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
        IntentFilter filter4 = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
        registerReceiver(receive, filter);
        registerReceiver(receive, filter2);
        registerReceiver(receive, filter3);
        registerReceiver(receive, filter4);
        super.onCreate();
    }
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        unregisterReceiver(receive);
    }

}

我的错误看起来像这样:

12-24 17:02:20.299: E/AndroidRuntime(6693): FATAL EXCEPTION: main
12-24 17:02:20.299: E/AndroidRuntime(6693): java.lang.RuntimeException: Error receiving broadcast  Intent { act=android.intent.action.SCREEN_OFF flg=0x40000000 } in app.santanu.Service_and_Broadcast.lockscreenBroadcast@406a7c78
12-24 17:02:20.299: E/AndroidRuntime(6693):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:722)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at android.os.Handler.handleCallback(Handler.java:587)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at android.os.Looper.loop(Looper.java:130)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at android.app.ActivityThread.main(ActivityThread.java:3735)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at java.lang.reflect.Method.invokeNative(Native Method)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at java.lang.reflect.Method.invoke(Method.java:507)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at dalvik.system.NativeStart.main(Native Method)
12-24 17:02:20.299: E/AndroidRuntime(6693): Caused by: java.lang.NullPointerException
12-24 17:02:20.299: E/AndroidRuntime(6693):     at app.santanu.Service_and_Broadcast.lockscreenBroadcast.onReceive(lockscreenBroadcast.java:26)
12-24 17:02:20.299: E/AndroidRuntime(6693):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709)
12-24 17:02:20.299: E/AndroidRuntime(6693):     ... 9 more
12-24 17:02:20.309: E/AndroidRuntime(6693): [Blue Error Handler] Make Debugging Report file for main
12-24 17:02:20.309: E/AndroidRuntime(6693): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.SCREEN_OFF flg=0x40000000 } in app.santanu.Service_and_Broadcast.lockscreenBroadcast@406a7c78
12-24 17:02:20.309: E/AndroidRuntime(6693):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:722)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at android.os.Handler.handleCallback(Handler.java:587)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at android.os.Looper.loop(Looper.java:130)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at android.app.ActivityThread.main(ActivityThread.java:3735)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at java.lang.reflect.Method.invokeNative(Native Method)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at java.lang.reflect.Method.invoke(Method.java:507)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at dalvik.system.NativeStart.main(Native Method)
12-24 17:02:20.309: E/AndroidRuntime(6693): Caused by: java.lang.NullPointerException
12-24 17:02:20.309: E/AndroidRuntime(6693):     at app.santanu.Service_and_Broadcast.lockscreenBroadcast.onReceive(lockscreenBroadcast.java:26)
12-24 17:02:20.309: E/AndroidRuntime(6693):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709)
12-24 17:02:20.309: E/AndroidRuntime(6693):     ... 9 more

0 个答案:

没有答案