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