BroadcastReceiver nicht erhalten, Vorsatz Vorsatz.ACTION_LOCALE_CHANGED
Ich möchte, dass meine app sich bewusst sein, wenn der Benutzer änderungen der locale. Also in meinem Application
Klasse, ich erstelle ein receiver
zu hören, um das system Absicht ACTION_LOCALE_CHANGED
:
public final class MyApp extends Application {
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) {
String locale = Locale.getDefault().getCountry();
Toast.makeText(context, "LOCALE CHANGED to " + locale, Toast.LENGTH_LONG).show();
}
};
@Override public void onCreate() {
IntentFilter filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, filter);
}
}
Wenn ich drücken Sie auf Startseite und wechseln Sie zur Einstellungen-app ändern, meine locale, der Toast wird nicht angezeigt. Einstellung der Haltepunkt in onReceive
zeigt, dass es sich nie getroffen wird.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Intent.ACTION_LOCALE_CHANGED
ist nicht eine lokale broadcast, also es wird nicht funktionieren, wenn Sie sich mitLocalBroadcastManager
.LocalBroadcastManager
ist für den broadcast verwendet in Ihrem app.context.getResources().getConfiguration().locale
innerhalb deronReceive
Methode.Warum willst du die BroadcastReceiver in der Application-Klasse. Mein Vorschlag ist, eine separate Klasse für BroadcastRecevier.
ist und registrieren Sie Ihre Brodcast-Empfänger in der Manifest-Datei.