我需要監聽screen_on和screenof_action。來自BroadcastReceiver的Android調用服務
我使用BroadcastReceiver和Service。但我得到錯誤。我如何修復我的代碼?
這是我的廣播接收器類:
public class BroadcastReceiver extends android.content.BroadcastReceiver {
public static boolean screenOff = true;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
screenOff = true;
// System.out.println("System ON OLDU ON ON ON ON ON ON");
Intent i = new Intent(context, MyNewService.class);
i.putExtra("screen_state", true);
context.startService(i);
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOff = false;
Intent i = new Intent(context, MyNewService.class);
i.putExtra("screen_state", false);
context.startService(i);
// System.out.println("System OFFFF OLDU OFFFF OFFFF OFFFF OFFFF");
}
}
}
這是我的服務類:
public class MyNewService extends Service {
BroadcastReceiver locker;
public static boolean screenOn = true;
public void onCreate(){
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
locker=new BroadcastReceiver();
registerReceiver(locker, filter);
}
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
Log.i("START", "onStart");
screenOn = intent.getBooleanExtra("screen_state", false);
if(screenOn){
// startActivity(new Intent(this, MainActivity.class));
Log.i("SCREEN", "SCREEN OFFFFFFFFFFFFFFFF");
} else {
Log.i("SCREEN", "SCREEN OF FFFFFFFFFFFFFFFFFFFFFFFFF");
}
// If the screen is off then the device has been locked
}
@Override
public void onDestroy(){
unregisterReceiver(locker);
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
這是我的錯誤代碼:
:19:52.696 32141-32141/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.codeexamples.app, PID: 32141
java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.codeexamples.app/.MyNewService }: java.lang.NullPointerException
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2705)
at android.app.ActivityThread.access$2100(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.codeexamples.app.MyNewService.onStart(MyNewService.java:25)
at android.app.Service.onStartCommand(Service.java:450)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2688)
at android.app.ActivityThread.access$2100(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
這是我的清單在未經許可:
服務:
<service
android:name="com.codeexamples.app.MyNewService"
android:enabled="true" />
廣播:
<receiver android:name="com.codeexamples.app.BroadcastReceiver" >
</receiver>
許可:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY"/>
當我M在檢查錯誤logcat顯示我這一行:
screenOn = intent.getBooleanExtra(「screen_state」,false);
總是顯示這一行,我認爲在這一行中有錯誤。
你有java.lang.NullPointerException,發佈整個堆棧跟蹤 – pskink 2014-10-10 06:42:36
我想你想要所有的錯誤,我加了我的代碼 – 2014-10-10 06:45:29
java.lang.NullPointerException來自com.codeexamples.app.MyNewService.onStart(MyNewService.java:25) – pskink 2014-10-10 06:49:30