2012-05-12 16 views
0

サービスとその通知を作成しようとしています。私が持っているものは2つのボタンです。スタートボタンをクリックするとサービスが開始され、停止する必要があります。しかし、今は彼らが働いていません。メインクラス、サービスクラス、通知クラスがあります。ここに私のコードとlogcatの出力があります。サービスが正常に開始しない

私のサービスクラスは、ここで

パッケージcom.zafar.batterynotifyです。

import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.os.IBinder; 
import android.widget.Toast; 

public class BatteryService extends Service { 
Notify notification = new Notify(); 

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

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    notification.initNotification(this); 
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
    return START_STICKY; 
} 

public void onDestroy() { 
    super.onDestroy(); 
    notification.cancelNotification(this); 
    Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show(); 
} 

} 

通知クラス

パッケージcom.zafar.batterynotify。

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 

public class Notify { 
private static final int NOTIFICATION_ID = 1; 

public void initNotification(Context actContext) { 
    String ns = actContext.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) actContext.getSystemService(ns); 
    int icon = R.drawable.ic_launcher; 
    CharSequence tickerText = "Service Started"; 
    long when = System.currentTimeMillis(); 
    Notification notification = new Notification(icon, tickerText, when); 
    notification.flags = Notification.FLAG_ONGOING_EVENT; 
    //Context context = actContext.getApplicationContext(); 
    Context context = MyApplication.getContext(); 
    CharSequence contentTitle = "Ongoing service"; 
    CharSequence contentText = "This is service is ongoing"; 
    Intent notificationIntent = new Intent(context, BatteryNotify.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
    mNotificationManager.notify(NOTIFICATION_ID, notification); 
} 

public void cancelNotification(Context actContext) { 
    String ns = Context.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) actContext.getSystemService(ns); 
    mNotificationManager.cancel(NOTIFICATION_ID); 
} 
} 

このラインマイlogcat出力

05-12 12:35:35.480: D/AndroidRuntime(27598): Shutting down VM 
05-12 12:35:35.480: W/dalvikvm(27598): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 
05-12 12:35:35.490: E/AndroidRuntime(27598): FATAL EXCEPTION: main 
05-12 12:35:35.490: E/AndroidRuntime(27598): java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.zafar.batterynotify/.BatteryService }: java.lang.NullPointerException 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2056) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.app.ActivityThread.access$2800(ActivityThread.java:117) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:998) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.os.Looper.loop(Looper.java:130) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.app.ActivityThread.main(ActivityThread.java:3691) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at java.lang.reflect.Method.invokeNative(Native Method) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at java.lang.reflect.Method.invoke(Method.java:507) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at dalvik.system.NativeStart.main(Native Method) 
05-12 12:35:35.490: E/AndroidRuntime(27598): Caused by: java.lang.NullPointerException 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.content.ComponentName.<init>(ComponentName.java:75) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.content.Intent.<init>(Intent.java:2859) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at com.zafar.batterynotify.Notify.initNotification(Notify.java:24) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at com.zafar.batterynotify.BatteryService.onStartCommand(BatteryService.java:20) 
05-12 12:35:35.490: E/AndroidRuntime(27598): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2043) 
05-12 12:35:35.490: E/AndroidRuntime(27598): ... 10 more 
05-12 12:35:56.465: D/AndroidRuntime(27706): Shutting down VM 
05-12 12:35:56.465: W/dalvikvm(27706): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 
05-12 12:35:56.470: E/AndroidRuntime(27706): FATAL EXCEPTION: main 
05-12 12:35:56.470: E/AndroidRuntime(27706): java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.zafar.batterynotify/.BatteryService }: java.lang.NullPointerException 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2056) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.app.ActivityThread.access$2800(ActivityThread.java:117) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:998) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.os.Looper.loop(Looper.java:130) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.app.ActivityThread.main(ActivityThread.java:3691) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at java.lang.reflect.Method.invokeNative(Native Method) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at java.lang.reflect.Method.invoke(Method.java:507) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at dalvik.system.NativeStart.main(Native Method) 
05-12 12:35:56.470: E/AndroidRuntime(27706): Caused by: java.lang.NullPointerException 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.content.ComponentName.<init>(ComponentName.java:75) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.content.Intent.<init>(Intent.java:2859) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at com.zafar.batterynotify.Notify.initNotification(Notify.java:24) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at com.zafar.batterynotify.BatteryService.onStartCommand(BatteryService.java:20) 
05-12 12:35:56.470: E/AndroidRuntime(27706): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2043) 
05-12 12:35:56.470: E/AndroidRuntime(27706): ... 10 more 
+0

ComponentName.java:75はライン75何かが、私はそのファイルComponentName.javaを見つけることができます –

+0

nullである参照してください?私はこのファイルを自分のプロジェクトのどこにでも作りました。 – 2619

答えて

1

Intent notificationIntent = new Intent(context, BatteryNotify.class); 

context I s null

+0

CommonsWareはこのエラーをどのように見つけましたか教えていただけますか? logcatはこの行にヌル値があるとは言いません。 – 2619

+1

はal0neevenings @:あなたのスタックトレースは、例外が、それは( 'android.content.Intentで' Intent'コンストラクタと呼ばれるcom.zafar.batterynotify.Notify.initNotification(Notify.java:24) '、'によってトリガーされたことを示しています。 (Intent.java:2859) ')。それは私に行番号がないにもかかわらず、あなたのコードに問題があるコード行を教えてくれました。 'NullPointerException'を引き起こす唯一のことは' context'が 'null'だった場合です。 – CommonsWare

関連する問題