JavascriptProva

giovedì 7 aprile 2016

Approfondimento sull'action negli Intents, per chiamare un'Activity o un BroadcastReceiver.

Adesso faccio un esperimento diverso.
Se è vero che un Intent implicito può chiamare sia un'Activity che un BroadcastReceiver, voglio vedere cosa succede se creo un'Activity e un BroadcastReceiver con la stessa action.

 <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Seconda"
            android:label="@string/title_activity_seconda" >
            <intent-filter>
                <action android:name="android.intent.action.Seconda" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Altra"
            android:label="@string/title_activity_altra" >
            <intent-filter>
                <action android:name="android.intent.action.Seconda" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <receiver android:name="receiver">
            <intent-filter>
                <action android:name="android.intent.action.Seconda" />
            </intent-filter>
        </receiver> 
Proviamo ora con sendBroadcast:
Questo è il codice della classe che estende BroadcastReceiver:
public class receiver extends BroadcastReceiver{

 @Override
 public void onReceive(Context context, Intent intent) {
  Log.d("BROADCAST","RICEVUTO");
  
 }

}
che dovrebbe stamparmi "BROADCAST" "RICEVUTO" in LogCat.

E adesso uso l'Intent:
  Intent intent=new Intent();
  intent.setAction("android.intent.action.Seconda");
  sendBroadcast(intent);
Vediamo...

04-06 23:09:59.693: D/BROADCAST(3727): RICEVUTO

Perfetto!
Invece, con Activity:
  Intent intent=new Intent();
  intent.setAction("android.intent.action.Seconda");
  startActivity(intent);
Proviamo...

Ecco:

Nessun commento:

Posta un commento