2016-07-08 11 views
4

Was in der Absicht tut setAction() tun (Service)Was tut setAction() tun für Vorsatz (Broadcast)

ich wirklich nicht bekommen, was setAction() hat, fand ich es meistens in "Service zu Aktivitätsdaten übergeben "Beispiel. Kann die Saite frei eingestellt werden? Was genau macht es?

Wenn eine Sendung Absicht erstellt wird, muss es eine Aktion STRING zusätzlich zu optionalen Daten und eine Kategorie String enthalten. Wie bei Standardabsichten werden Daten zu einer Broadcast Intent hinzugefügt, die Schlüssel/Wert-Paare in Verbindung mit der putExtra() - Methode des Intent-Objekts verwendet. Die optionale Kategorie-Zeichenfolge kann einem Broadcast-Intent über einen Aufruf der Methode addCategory() zugewiesen werden. Die Aktionszeichenfolge, die das Broadcast-Ereignis angibt, muss eindeutig sein und verwendet normalerweise die Syntax des Java-Paketnamens der Anwendung. Beispielsweise erstellt der folgende Code-Fragment und sendet eine Broadcast- Absicht einschließlich einer einzigartigen Aktion String und Daten:

Intent intent = new Intent(); 
intent.setAction("com.example.Broadcast"); 
intent.putExtra("HighScore", 1000); sendBroadcast(intent); 

Eine weitere Variante ich gesehen habe, ist:

Intent broadcastIntent = new Intent(); 

      broadcastIntent.setAction("com.truiton.broadcast.string"); 
      broadcastIntent.putExtra("Data", "Broadcast Data"); 
      sendBroadcast(broadcastIntent); 

      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      broadcastIntent.setAction("com.truiton.broadcast.integer"); 
      broadcastIntent.putExtra("Data", 10); 
      sendBroadcast(broadcastIntent); 

      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      broadcastIntent .setAction("com.truiton.broadcast.arraylist"); 
      broadcastIntent.putExtra("Data", mList); 
      sendBroadcast(broadcastIntent); 

das sieht zu Identifizieren Sie den eingehenden Datentyp lieber.

Bedeutet es Ereignis, eingehende Datentyp, eine Aktion oder jede Intent Schöpfung identifiziert? Kann es frei werden?

+0

https://developer.android.com/reference/android/content/Intent.html#setAction(java.lang.String) –

+0

hallo RRR, I hab gelesen, dass ich das bild gerade noch nicht bekomme –

Antwort

3

Mit dem <action> Tag innerhalb <activity> Tages eine Aktion in Ihrer Manifest.xml Datei zu setzen, ist so, wie es programmatisch mit intent.setAction in der Java-Datei zu setzen.

Diese werden normalerweise für Broadcast-Empfänger verwendet.

Das Folgende ist ein XML-Beispiel:

<receiver android:name="MyReceiver" > 
      <intent-filter> 
       <action android:name="com.example.SendBroadcast" > 
       </action> 
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" >   
       </action> 
      </intent-filter> 
     </receiver> 

Aber wenn Sie eine BroadCastReceiver wollen, dann programmatisch registrieren und deregistrieren setAction() verwendet werden kann.

Intent intent = new Intent(); 
      intent.setAction("com.example.SendBroadcast"); 
      intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
      sendBroadcast(intent); 

Weitere Informationen einfach überprüfen: http://www.techotopia.com/index.php/Android_Broadcast_Intents_and_Broadcast_Receivers

+0

Aber wenn man einen BroadCastReceiver programmatisch registrieren und abmelden will dann kann setAction() verwendet werden - das ist einfach falsch eher 'setAction()' setzt die 'allgemeine Aktion auf durchgeführt werden. Beispiel ist korrekt, nur die Aussage nach dem Beispiel ist falsch. – shadygoneinsane