【问题标题】:service receiving Null values in an intent服务在意图中接收 Null 值
【发布时间】:2020-05-05 02:19:02
【问题描述】:

我正在从 BroadcastReceiver 启动一个服务并将一些值从 BroadcastReceiver 发送到该服务。当我试图在服务中检索这些值时,它给了我空值。

请让我知道我做错了什么。提前致谢!

从广播开始服务-

    Intent serviceIntent = new Intent(context, LatestCallService.class);
    intent.putExtra("from","Internet");
    context.startService(serviceIntent);

在服务中检索价值但给出 Null-

    public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStart(intent, startId);
    String a= intent.getStringExtra("from");
    Toast.makeText(this, " Name : "+a, Toast.LENGTH_SHORT).show();

【问题讨论】:

  • 你的代码看起来不错,你添加了breakpoint 并检查了吗?

标签: android android-intent service broadcastreceiver


【解决方案1】:
 @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Event", Toast.LENGTH_SHORT).show();
        intent = new Intent(context, MyService.class);
        intent.putExtra("check","done");
        context.startService(intent);
    }

使用 onReceive 方法中的 Intent

【讨论】:

  • 非常感谢。它奏效了,您的解决方案为我节省了大量时间,但您能告诉我为什么我们使用从广播接收器获得的相同意图吗?
【解决方案2】:

在获取意图时,将代码放入 onBind() 方法
服务: @覆盖 公共IBinder onBind(意图意图){ mTourName = intent.getStringExtra("tour_name"); 返回 mBinder; }

试试这个。

【讨论】:

  • 我试过了,这次 Toast 也不来了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 2016-06-02
相关资源
最近更新 更多