Android 应用程序在应用程序启动时设置为静默模式
Posted
技术标签:
【中文标题】Android 应用程序在应用程序启动时设置为静默模式【英文标题】:Android application set to SilentMode onStart of the applicaion 【发布时间】:2019-12-26 02:46:10 【问题描述】:我的目的是让我的软件将手机设置为应用程序的onStart()
静音模式,并将媒体(手机扬声器)音量默认设置为0;
AudioManager audioManager = (AudioManager)MainPage.this.getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null)
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
我做得对吗?请纠正我。
【问题讨论】:
有什么问题? 是的,你是对的……更好地使用上下文。请参阅下面的解决方案:) android studio 给了我这个消息:java.lang.RuntimeException: Unable to start activity ComponentInfocom.johnmelodyme.BSC/com.johnmelodyme.BSC.MainPage: java.lang.SecurityException: Not allowed to change Do Not Disturb state
使用权限audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
更改请勿打扰状态```
【参考方案1】:
是的,您做得对,但 Android M 有所改变,请阅读 Android request ACCESS_NOTIFICATION_POLICY and mute phone 。
如果你想改进上面的代码(但是添加代码支持M及以上),那么你可以像这样修改
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null)
int currentMode = audioManager.getRingerMode();
if (currentMode != AudioManager.RINGER_MODE_SILENT)
// Make ringer mode silent
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
并确保您在清单中使用权限,因为此设置需要<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
。
【讨论】:
【参考方案2】:试试下面的代码希望对你有帮助 -
AudioManager am;
am= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
if(am != null)
//For Silent mode
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
不要忘记在清单文件中添加权限 -
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
【讨论】:
以上是关于Android 应用程序在应用程序启动时设置为静默模式的主要内容,如果未能解决你的问题,请参考以下文章