5
我寫了一個小工具,應用程序只是爲了我的手機,其停止惱人的運營商提供的順口溜其在啓動時播放。我注意到,如果在關閉電源之前將手機置於靜音模式,則聲音無法播放,所以我編寫了這個小工具,可以在關機時保持沉默並在啓動時恢復聲音。這對於薑餅上的Galaxy S2非常有效。整個代碼爲兩類:BroadcastReceivers在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);
}
}
和
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,它不再起作用。如果我在關機前將手機置於靜音模式,則鈴聲不會播放。因此我懷疑這兩個接收器都沒有被觸發。 (我確實把一些日誌代碼放在沒有出現的接收器中,但我懷疑是因爲它的時間可能不會在薑餅下顯示)
任何建議,請問爲什麼它不會工作了?
我想我明白了。所以如果我用Toast或其他東西添加一個虛擬活動並且只運行一次,它應該在其後工作? – NickT 2012-03-27 15:11:28
@NickT:是的。如果你分發這個應用程序,你可以使用一些技巧來禁用早期版本的Android上的組件,所以它不會混亂啓動器。下面是一個示例項目中,我使用的技巧:https://github.com/commonsguy/cw-advandroid/tree/master/RemoteViews/Plugin – CommonsWare 2012-03-27 15:16:23
謝謝,現在工作得很好,從社會的尷尬節省了我,當我打開手機上。 (附註:我剪切和粘貼「沉默」和「正常」從實際的代碼以錯誤的方式,當我第一次張貼的問題) – NickT 2012-03-27 15:32:50