java.lang.NullPointerException IntentService

时间:2016-11-04 11:54:50

标签: android android-intent service

我正在尝试在设备上安装的其他应用中启动服务。使用startService

时出现NullPointerException
    public void notConnected(){
        Log.i(TAG,"no connection... reconnecting.");
        Intent reset = new Intent("com.famoco.intent.action.TOGGLE_DATA");
        Log.i(TAG,"calling " + reset.getAction());
        if(reset.getAction().equals("com.famoco.intent.action.TOGGLE_DATA"))
        {
            startService(reset);
        }
        else
        {
            Log.i(TAG,"couldn't start service");
        }
}

这是错误日志

E/AndroidRuntime: FATAL EXCEPTION: IntentService[MyAppCommService]
              Process: com.myapppackage.MyApp, PID: 8583
              java.lang.NullPointerException
                  at android.content.ContextWrapper.startService(ContextWrapper.java:494)
                  at com.myapppackage.MyApplocation.activity.MyAppActivity.notConnected(MyAppActivity.java:591)
                  at com.myapppackage.MyApplocation.api.MyAppApi.submitClock(MyAppApi.java:228)
                  at com.myapppackage.MyApplocation.service.MyAppCommService.submitTags(MyAppCommService.java:52)
                  at com.myapppackage.MyApplocation.service.MyAppCommService.onHandleIntent(MyAppCommService.java:98)
                  at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
                  at android.os.Handler.dispatchMessage(Handler.java:110)
                  at android.os.Looper.loop(Looper.java:193)
                  at android.os.HandlerThread.run(HandlerThread.java:61)

结果我的上下文返回null,我通过在onCreate中获取上下文并调用myContext.startservice来修复它。

2 个答案:

答案 0 :(得分:0)

您正在开始新的Intent。看看那个谷歌的例子,看起来你用错误的方法来启动它。

- you use:
startService(reset);

- try this one:
startActivity(intent);

但这会启动一项活动。而你想要一个服务。除非您是其他应用的开发者,否则我认为您无法做到。一般来说,Android应用程序无法访问彼此的代码和资源。

答案 1 :(得分:0)

通过返回onCreate()中的上下文然后调用context.startService()

来解决此问题