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 使用权限 现在我得到了这个:``` 原因:java.lang.SecurityException:不允许为我的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 应用程序在应用程序启动时设置为静默模式的主要内容,如果未能解决你的问题,请参考以下文章

Android静默安装与静默卸载(系统应用)

Android 静默安装和自启动(1、Root环境下)

Android静默安装及开机自启的简单实现

在未运行时通过静默通知启动 iOS 应用程序

Android是否可以实现静默安装模式

GUI 在运行静默应用程序 VC++ 时被阻止