【问题标题】:Android application set to SilentMode onStart of the applicaionAndroid 应用程序在应用程序启动时设置为静默模式
【发布时间】: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 ComponentInfo{com.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); 更改请勿打扰状态```

标签: java android audio


【解决方案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" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 2011-12-15
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多