2016-04-14 2 views
0

Я пытаюсь отправить дополнительную информацию получателю вещания. Я всегда получаю нулевое значение. Может ли кто-нибудь помочь мне исправить это?Отправить значение broadcastReceiver Intent Filter

Вот что я пробовал:

IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); 
context.registerReceiver(downloadReceiver, intentFilter); 

Intent intent2 = new Intent("my.action.string"); 
intent2.putExtra("value", position); 
context.sendBroadcast(intent2); 

И в моем BroadcastReceiver:

private BroadcastReceiver downloadReceiver = new BroadcastReceiver() 
    { 
     public int value=5; 

     @Override 
     public void onReceive(Context arg0, Intent intent) 
     { 
      String action = intent.getAction(); 
      value = Integer.valueOf(intent.getExtras().getString("value")); 

      if(action.equals("android.intent.action.DOWNLOAD_COMPLETE")) 
      { 
       Log.e("Value","+ - "+value); 

       CheckDwnloadStatus(value); 
      } 

     } 
    }; 

Спасибо!

+0

Вы пытаетесь получить значение '' 'extra как' String'. Является ли 'position' a' String'? Похоже, это может быть числовой тип. –

+0

Да. Это целое число. Следовательно, я получаю преобразование в целое число при его получении. –

+0

Вам нужно использовать метод 'getInt()' вместо метода getString(). –

ответ

0

position - ваше целое число. Если вы помещаете целое число с intent.putExtra(), вы должны использовать intent.getExtras().getInt().

Причина: В intent.putExtra() мы не указываем тип. Система решает, какой тип Extra мы прошли. Поскольку position известен как Integer Системе для ее извлечения, нам нужно использовать intent.getExtras().getInt().