2017-10-06 35 views
0

我想將我的Android設備音頻模式從普通模式更改爲靜默模式並保持正常。 `如何在Android 7.0中更改音頻模式(無聲,普通)而無需打開設置意圖?

AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
       if(!silent) { 
        audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
        silent = true; 
       } 
       else { 
        audio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); 
        silent = false; 
       } 

` 這是我的代碼,我使用。完美運行,直到Android 6所有版本。 但在Android 7+上它崩潰。

我在網上找到一個解決方案,打開一個設置意圖,並從用戶那裏獲得一些權限,然後這段代碼工作正常。這是我用那麼

Intent intent = new Intent(
        android.provider.Settings 
        .ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS); 

startActivity(intent); 

但我的項目的要求是不要求開一個設置的意圖,以允許它在那裏形成的代碼。是應該像獲得用戶許可改變模式在同一活動就像所有其他權限,即位置,讀取聯繫人等工作

我試圖找出他們如何實現代碼文件中的權限,但沒有找到它。如果有人知道,請讓我知道。

+0

「但在Android 7+上它崩潰」 - 使用LogCat檢查與您的崩潰相關的Java堆棧跟蹤:https://stackoverflow.com/questions/23353173/uncomfort-myapp-has-stopped-how-can -i-solve-this – CommonsWare

+0

是的,我已經檢查過了。 它說你沒有被授予改變設置:( –

+0

如果你編輯你的問題,併發布整個Java堆棧跟蹤,你可能會有更多的運氣好運 – CommonsWare

回答

1

這是更改了Android的音頻模式與api level > 23

Intent intent = new Intent(
       android.provider.Settings 
       .ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS); 
startActivity(intent); 

現在正式通過其發佈的Android獲得訪問設備的通知策略來改變音頻模式的用戶權限的唯一途徑。

+0

好的,謝謝你的迴應,我正在等待這個 –

+0

這是不正確的,不知道如何,但無聲模式切換能夠切換此設置而不要求權限。我已經反編譯apk並試圖重新創建它,但我不明白爲什麼它是不可能的。 –

相關問題