Question Est-il possible de définir un récepteur de diffusion en tant que classe interne dans un fichier manifeste? [dupliquer]


Cette question a déjà une réponse ici:

Je veux créer un récepteur de diffusion en tant que classe interne dans mon activité principale. Mais j'ai des problèmes pour définir le récepteur de diffusion dans le fichier XML manifeste, parce que Android ne peut pas le trouver.

Code:

public class MyActivity extends Activity{
    ...

    public class Receiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            ....
        }

    }

    ...
}

Manifeste:

<receiver android:name=".org.danizmax.myapp.MyActivity$Receiver" android:enabled="true">
            <intent-filter>
                <action android:name="org.danizmax.myapp.BROADCAST_INITIAL_DATA"></action>
            </intent-filter>
</receiver>

J'ai essayé avec:

  • .org.danizmax.myapp.MyActivity $ Receiver
  • org.danizmax.myapp.MyActivity $ Receiver
  • .MyActivity $ Receiver
  • .Destinataire

J'ai vu d'autres personnes ayant également des problèmes similaires, mais je n'ai trouvé aucune réponse.

Est-ce possible? Sinon, quelle est la meilleure façon d'utiliser les récepteurs de diffusion?

Merci!


37
2017-12-08 20:29


origine


Réponses:


Oui c'est possible.

Le récepteur Android: attribut name devrait ressembler à .path.to.class.MyClass$MyInnerClass


68
2017-12-08 21:23



Si vous voulez cela avec un non statique classe interne, vous ne pouvez pas le faire via le fichier AndroidManifest.xml. Vous pouvez toutefois enregistrer dynamiquement le BroadcastReceiver: Receiver en classe interne dans Android


12
2018-06-01 14:18



La meilleure façon d'utiliser BroadcastReceivers serait d'en faire sa propre classe. De cette façon, le code est mieux organisé et vous pouvez le réutiliser.


-2
2017-12-08 20:35