2017-06-13 2 views
3

je suis nouveau sur android. J'essaie d'enregistrer le BroadcastReceiver dans le code de mon activité. voici mon code:comment créer et enregistrer le BroadcastReceiver dans le code

classe MyReciever:

public class MyReciever extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

    Log.i("===>", "onReceive: "+ intent.getAction()); 
    Toast.makeText(context, "I got it "+ intent.getIntExtra("MyValue",0), Toast.LENGTH_SHORT).show(); 

} 
} 

MyActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    myReciever = new MyReciever(); 
    intentFilter = new IntentFilter(); 
    intentFilter.addAction("test"); 
} 

@Override 
protected void onResume() { 
    registerReceiver(myReciever, intentFilter); 
    super.onResume(); 
} 
} 

Manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.safarayaneh.mybroadcastreciever"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

quand je lance mon application, rien ne se passe et du pain grillé est pas ! J'ai lu this et article this et je ne comprends pas où est mon problème.

+0

Quelle émission attendez-vous à recevoir? Je ne vois rien qui envoie une diffusion avec l'action '' test ''. –

+0

@MikeM. vous voulez dire que je dois utiliser l'intention de diffusion? –

+0

Oui, quelque chose doit diffuser un "Intent" pour lequel votre récepteur est enregistré. Sinon, rien ne va se passer. –

Répondre

0

Enregistrez votre récepteur diffusons en onResume et désenregistrer dans OnPause comme ce

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    myReciever = new MyReciever(); 
    intentFilter = new IntentFilter(); 
    intentFilter.addAction("test"); 
} 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     unregisterReceiver(reMyreceive); 
    } 
    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 

      registerReceiver(reMyreceive, filter); 
    } 
+0

Je fais ça mais ça ne marche pas !! –

1

MainActivity public class étend AppCompatActivity {

private IntentFilter intentFilter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     //this line makes the broadcastreceiver 
    BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Toast.makeText(context, "I got it "+ intent.getIntExtra("MyValue",0), Toast.LENGTH_SHORT).show(); 
     } 
    }; 
    //this line register broadcastreceiver 
    LocalBroadcastManager.getInstance(getContext()).registerReceiver(mBroadcastReceiver, new IntentFilter("test")); 

    //this line calls the broadcastreceiver 
    LocalBroadcastManager.getInstance(this).sendBroadcast(new  Intent("test")); 

}

+0

c'est mon nouveau code .look! Http: //codepad.org/RWBpTAk2. pas encore travaillé –

+0

J'ai écrit les étapes pour vous dans les commentaires – Meikiem

+0

merci dude.i vous a donné un coup de pouce pour votre aide. mais résolu mon problème. –