1

Я пытаюсь разрешить пользователю оставлять комментарии, когда он отключен, так что всякий раз, когда wifi/internet включается, его комментарий будет опубликован. Что я использую BroadCastReceiver. Но проблема я что это никогда не происходит внутри if (intent.getAction().equals("commentpost")), если я пытаюсь включить Wi-Fi после нажатия на postcomment.However он действительно входит в if (wifi.isAvailable() || mobile.isAvailable()) всякий раз, когда я включаю wifi.I не понял, где я иду не так. Мой журнал показывает «Сеть доступна», но никогда не отображается «комментарий для комментариев».Android - Пользовательское действие в Broadcast Intent

commentpost.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View view) 
      { 
    Intent intent = new Intent(); 
       intent.setAction("commentpost"); 
       mContext.sendBroadcast(intent); 
} 
} 


public class NetworkChangeReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 
     final ConnectivityManager connMgr = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 

     final android.net.NetworkInfo wifi = connMgr 
       .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

     final android.net.NetworkInfo mobile = connMgr 
       .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

     if (wifi.isAvailable() || mobile.isAvailable()) 
     { 
      Log.e("Network Available", "Flag No 1"); 
      if (intent.getAction().equals("commentpost")) { 
       Log.e("posting comment", "Flag No 2"); 
      postComment(); 
      } 
     } 
    } 
} 

Manifest

<receiver android:name="xyz.NetworkChangeReceiver" android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE"></action> 
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
       <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> 
      </intent-filter> 
     </receiver> 
+0

, где находится фактическое, если вы жалуетесь? – Fred

+0

@Fred Я не понимаю, что означало wht u. – user3684678

+0

Вы сказали, что ваша проблема возникла при входе if if (intent.getAction(). Equals ("beentherecicked")) '', но я не вижу это в коде, который вы опубликовали. – Fred

ответ

2

Вы должны добавить пользовательское действие в intent-filter вашего BroadcastReceiver. Только тогда Intent запустит ваш BroadcastReceiver.

<intent-filter> 
    <action android:name="android.intent.action.PHONE_STATE"></action> 
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
    <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> 
    <action android:name="commentpost"/> 
</intent-filter> 
+0

спасибо! – user3684678

+0

Привет, я снова с такой же проблемой .. \t Я написал это внутри onReceive- 'Log.e (« NetworkChangeReceiver »,« intent »+ intent.getAction());' .. то я получаю .. ' intentandroid.net.conn.CONNECTIVITY_CHANGE' в ​​журнале..пожалуйста, проверьте здесь-http: //stackoverflow.com/questions/29061524/intent-setaction-and-intent-getaction-not-working-in-broadcastreceiver – user3684678

+0

@ user3684678 : Я смотрю на этот вопрос, но сделал ли это работу с 'commentpost'? –

 Смежные вопросы

  • Нет связанных вопросов^_^