Je me suis inscrit après receiver
qui n'est pas appelé Android Oreo mais fonctionne sur les appareils de version inférieure.
<receiver
Android:name=".common.receiver.ConsultReceiver"
Android:exported="false">
<intent-filter>
<action Android:name="APP_STARTED" />
<action Android:name="APP_STARTED_FROM_ORGANIC" />
</intent-filter>
</receiver>
Toute aide serait appréciée?
Votre <receiver>
N'est pas exporté. Cela suggère une des trois choses suivantes:
Vous l'utilisez avec un PendingIntent
, comme pour un Notification
. Si c'est le cas, supprimez le <intent-filter>
Et utilisez un Intent
(new Intent(this, ConsultReceiver.class)
) explicite dans le cadre de la création de votre PendingIntent
qui pointe vers ce récepteur.
Vous l'utilisez dans le cadre de certains IPC entre plusieurs processus d'application dans votre application. Dans ce cas, utilisez également un Intent
explicite.
Vous utilisez ce récepteur uniquement dans un processus au sein de votre application. Dans ce cas, supprimez le <receiver>
Et utilisez autre chose (LocalBroadcastManager
, un bus d'événements, RxJava, LiveData
, etc.).
Si votre application cible le niveau 26 ou supérieur de l'API, vous ne pouvez pas utiliser le manifeste pour déclarer un récepteur pour les diffusions implicites (diffusions qui ne ciblent pas spécifiquement votre application), à l'exception de quelques diffusions implicites exemptées de cette restriction. Dans la plupart des cas, vous pouvez utiliser des tâches planifiées à la place.
Dans Android 8.0 et supérieur, utilisez le code suivant pour vérifier si une application est installée ou désinstallée.
class MainActivity : AppCompatActivity() {
private val receiver = YourBroadcastReceiverClass()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val filter = IntentFilter();
filter.addAction(Intent.ACTION_PACKAGE_ADDED)
filter.addAction(Intent.ACTION_PACKAGE_REMOVED)
filter.addDataScheme("package")
registerReceiver(receiver, filter)
}
override fun onDestory() {
unregisterReceiver(receiver)
super.onDestroy()
}
}
Limitez le Intent
à votre package avec setPackage .