2016-04-14 17 views
0

ブロードキャストレシーバに余分な値を送信しようとしています。常にヌル値を取得しています。誰かが私にこれを解決するのを助けることができる?broadcastReceiverに値を送信インテントフィルタ

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

あなたは ''値 ''余分な文字列を '' String''として取得しようとしています。 'position'は' String'ですか?数値型のようだ。 –

+0

はい。これは整数です。したがって、私はそれを整数に変換しています。 –

+0

'getString()'メソッドの代わりに 'getInt()'メソッドを使う必要があります。 –

答えて

0

positionはあなたの整数です。 intent.putExtra()で整数を入力する場合は、intent.getExtras().getInt()を使用してください。

理由: intent.putExtra()では、タイプを指定しません。システムは、どのタイプのExtraを渡すかを決定します。 positionは、それを取得するためにシステムにIntegerとして知られているので、intent.getExtras().getInt()を使用する必要があります。

関連する問題