刚刚发现可以通过 NotificationListener Service 实现。(而且我的问题在其他地方已经有了答案……)
//In the Service I use this to enable and disable silent mode(or priority...)
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
boolean start = intent.getBooleanExtra("start", false);
if(start)
{
Log.d("TAG","START");
//Check if at least Lollipop, otherwise use old method
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
requestInterruptionFilter(INTERRUPTION_FILTER_NONE);
else{
AudioManager am = (AudioManager) getBaseContext().getSystemService(AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
}
else
{
Log.d("TAG","STOP");
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
requestInterruptionFilter(INTERRUPTION_FILTER_ALL);
else{
AudioManager am = (AudioManager) getBaseContext().getSystemService(AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
}
return super.onStartCommand(intent, flags, startId);
}