【发布时间】:2012-03-27 23:26:51
【问题描述】:
我为我的手机编写了一个小型实用应用程序,它阻止了恼人的运营商提供的启动时播放的叮当声。我注意到如果我在关机前将手机置于静音模式,声音就不会播放,所以我写了这个小工具来在关机时静音并在开机时恢复声音。这适用于 Gingerbread 上的 Galaxy S2。整个代码分为两个类:
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);
}
}
和
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);
}
}
清单是
<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>
现在我的手机已经被我的运营商升级到 ICS,它不再工作了。如果我在关机前将手机置于静音模式,则不会播放叮当声。因此我怀疑两个接收器都没有被触发。 (我确实在接收器中放了一些未显示的日志代码,但我怀疑由于时间原因,它可能也没有显示在 Gingerbread 下。)
请对为什么它不再起作用有任何建议吗?
【问题讨论】:
标签: android broadcastreceiver android-4.0-ice-cream-sandwich