我有以下代码

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    if(intent != null) {
        Log.i("INTENT", intent.getAction().toString());
    }
    return START_STICKY;
}

但它总是在线返回NullPointerException

Log.i("INTENT", intent.getAction().toString());

为什么? 如果“intent”变量不为null,我正在检查上面。 如果是这种情况,请执行以下代码。 但我仍然有nullpointerexception。

服务从以下活动开始:

startService(new Intent(this, MainService.class));

我究竟做错了什么?

===============>>#1 票数:13 已采纳

您收到NullPointerException因为intent.getAction()似乎返回null

你应该把支票延伸到这个:

if(intent != null && intent.getAction() != null) {

如果要为意图添加Action,则需要调用setAction()

Intent i = new Intent(this, MainService.class);
i.setAction("foo");
startService(i);

===============>>#2 票数:0

我得到了类似的堆栈,添加了支票

intent.getAction() != null

有效。

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.languoguang.welcomeapp, PID: 17676
              java.lang.RuntimeException: Unable to start service com.example.languoguang.welcomeapp.CountService@f6049d4 with Intent { cmp=com.example.languoguang.welcomeapp/.CountService }: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference
                  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3698)
                  at android.app.ActivityThread.access$1500(ActivityThread.java:198)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1668)
                  at android.os.Handler.dispatchMessage(Handler.java:106)
                  at android.os.Looper.loop(Looper.java:164)
                  at android.app.ActivityThread.main(ActivityThread.java:6649)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference
                  at com.example.languoguang.welcomeapp.CountService.onStartCommand(CountService.java:24)
                  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3679)
                  at android.app.ActivityThread.access$1500(ActivityThread.java:198) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1668) 
                  at android.os.Handler.dispatchMessage(Handler.java:106) 
                  at android.os.Looper.loop(Looper.java:164) 
                  at android.app.ActivityThread.main(ActivityThread.java:6649) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826) 

I /处理:发送信号。 PID:17676 SIG:9

  ask by Firefoxx Pwnass translate from so

未解决问题?本站智能推荐:

3回复

如何使用Intent传递类引用(不是对象)?

我有一个场景,其中有多个活动和一个服务。 当需要从任何URL获取数据时,所有这些Activity都将启动Service(活动的class name在Intent中传递)并注册BroadcastReceiver来侦听responseIntent ,Service会在获取响应时发送该Respons
8回复

使用Intent将数据从Activity传递到Service

如何获取从调用Activity传递的Android Service中的数据?
4回复

从Android中的Activity启动服务时出现“无法启动服务Intent”错误

当我尝试在MyActivity上使用CheckBox“活动来启动名为​​”MyService“的服务时,我在DDMS中看到以下错误: 我使用了教程http://developer.android.com/resources/tutorials/views/hello-formstuff.
1回复

如何恢复Android服务类的意图数据?

我已使用以下代码启动该服务。 启动服务代码: 我的服务代码: 当我退出应用程序时,将重新创建服务。 它将再次调用其onStartCommand方法。 现在,我想从意图中获取额外的数据。 但是意图将为空。 如何在服务类中存储和还原意图数据。 请帮我。
2回复

使用意图将数据发送到我的活动

我有一台运行的服务器通知用户打开我的主要活动的状态栏通知,如何通过该意图将数据传递给我的活动?
1回复

将广播意图从服务发送到应用程序类

是否可以将意图从服务发送到Application类? 没有活动? 我不知道在特定时间会运行什么活动,因此我在活动类中添加了一个布尔型标志,该标志检测活动并根据接收到的广播发送适当的数据。
2回复

从广播接收器向活动发送意图(活动存在问题)

我一直在寻找这么多东西,但没有找到解决方案。 我的应用程序始终会呼叫一个号码,当它收到具有确切号码的来电时,它将停止(死亡)。 我的想法是: 活动启动执行呼叫工作的服务 期待来电的BroadcastReceiver 因此,我想使用BroadcastReceive
1回复

android.content.ActivityNotFoundException:未找到处理意图的活动-来自服务

尝试从我的服务打开活动时遇到以下错误。 例外是:android.content.ActivityNotFoundException:未找到处理意图的Activity {act = com.sygic.aura flg = 0x10000000} 我正在尝试打开一些内部软件包“ com.s
1回复

空意图已重新传递给Service onStartCommand()

在Android文档中,该服务的“ onStartCommand() ”具有一个以param给出的意图,根据文档: “的Intent提供给startService(Intent) ,给定的。这可能是空如果进程已经走了之后,正在重新启动该服务,它以前返回任何东西,除了START_STICKY
2回复

Intent中的Bundle内部映射在Service的onStartCommand中为null

我试图通过以下代码传递一些数据来启动Service: 现在,当我尝试从Intent接收捆绑数据时,它表明捆绑中存在一些数据,但其映射为null 这是捆绑调试的样子