Ich hatte eine kleine Utility-App nur für mein Handy geschrieben, die den nervigen Carrier Jingle gestoppt hat, der beim Hochfahren gespielt wurde. Ich habe bemerkt, dass der Sound nicht abgespielt wurde, wenn ich das Telefon vor dem Ausschalten in den Stummschaltungsmodus versetzt habe, also schrieb ich dieses kleine Hilfsprogramm, um beim Herunterfahren leise zu klingen und beim Booten den Sound wiederherzustellen. Dies funktionierte gut für ein Galaxy S2 auf Lebkuchen. Der gesamte Code in zwei Klassen:BroadcastReceivers in ICS
public class OnShutDownReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager mgr=(AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
mgr.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
}
und
public class OnBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager mgr=(AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
mgr.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
}
Das Manifest ist
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nbt.hush"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name=".OnBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver android:name=".OnShutDownReceiver" >
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
</application>
</manifest>
Jetzt ist mein Telefon von meinem Träger ICS aktualisiert wurde, ist es nicht mehr funktioniert. Wenn ich das Telefon vor dem Ausschalten in den Lautlos-Modus setze, wird der Jingle nicht abgespielt. Daher vermute ich, dass keiner der Empfänger ausgelöst wird. (Ich habe einige Log-Codes in die Empfänger, die nicht angezeigt, aber ich vermute, dass wegen der Timings möglicherweise nicht unter Gingerbread entweder angezeigt worden.)
Alle Vorschläge bitte, warum es nicht Arbeit mehr?
Ich denke, ich verstehe. Wenn ich also eine Dummy-Aktivität mit einem Toast oder etwas hinzufüge und es nur einmal austrage, sollte es danach funktionieren? – NickT
@NickT: Ja. Wenn Sie diese App verteilen, können Sie mit einigen Tricks die Komponente in früheren Versionen von Android deaktivieren, sodass der Launcher nicht überlastet wird. Hier ist ein Beispielprojekt, wo ich diesen Trick verwende: https://github.com/commonsguy/cw-advandroid/tree/master/RemoteViews/Plugin – CommonsWare
Danke, das funktioniert jetzt gut, rettet mich vor sozialer Verlegenheit, wenn ich das Telefon umlege auf. (P. S. Ich habe "still" und "normal" aus dem richtigen Code herausgeschnitten und eingefügt, als ich die Frage zum ersten Mal gestellt habe) – NickT