【问题标题】:Cannot retrieve Intent Extras in Service onStart()无法在服务 onStart() 中检索 Intent Extras
【发布时间】:2010-07-26 01:53:00
【问题描述】:

我正在尝试从具有某些附加功能的另一项服务启动一项服务。但是,我无法在启动的服务中检索这些额外内容,.getIntExtra 返回 NullPointerException。

这就是我启动服务的方式:

Intent serviceIntent = new Intent(context, RefreshService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

PendingIntent contentIntent = PendingIntent.getService(this, 0, serviceIntent, 0);
updateViews.setOnClickPendingIntent(R.id.btnRefresh, contentIntent);


这就是我试图接收已启动服务中的附加内容的方式:

@Override    
public void onStart(Intent intent, int startId){
    super.onStart(intent, startId);
    mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
}

在我的示例中,mAppWidgetId 始终使用默认值 -1。

我做错了什么?


感谢您的帮助,

尼克

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    我通过.setAction.setFlags 而不是.putExtras 传输我的自定义值来“解决”它,效果很好。我可以用.getAction.getFlags 检索这些

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 感谢您的回答,但在我的情况下,根本没有(似乎)传递给启动的服务,这不是最新的问题。我尝试添加 FLAG_UPDATE_CURRENT ,但这无济于事:-/
      • 实际上,等等,这是两个相互冲突的语句 - 首先,您说 getIntExtra 抛出 NPE(表示意图为空),但随后您说它返回 -1(表示额外的不存在,或者你实际上传入了 -1 - 你确认你传入了正确的值吗?)。
      • 如果您查看第二个代码块的第四行:getIntExtra 解析为“-1”,因为这已被指定为默认值(以防额外的意图不存在) .如果我在不指定默认值的情况下查询额外内容,我会得到一个 NPE。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      相关资源
      最近更新 更多