0

I'm trying to create an app which sets ringer mode to silent from vibrate or normal mode, I checked the code much time but not able to find the problem in my code. Hope community will find the problem. And Help me to resolve.

public class MainActivity extends AppCompatActivity {

    private AudioManager myAudioManager;
    private Button silentBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        silentBtn = findViewById(R.id.button);

        myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        silentBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                int mod = myAudioManager.getRingerMode();
                if (mod == AudioManager.RINGER_MODE_SILENT) {
                    Toast toast = Toast.makeText(MainActivity.this, "You have wasted your time by clicking this Button.", Toast.LENGTH_SHORT);
                    toast.show();

                } else {
                    myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                    Toast toast1 = Toast.makeText(MainActivity.this, "You are Good to Go.", Toast.LENGTH_SHORT);
                    toast1.show();
                }
            }
        });
    }
}

I expect that the app should not crash when I click the button.

Creator
  • 303
  • 4
  • 23
  • post your error log – Mohammad Sommakia Jun 13 '19 at 18:07
  • The error log contains many characters. Please wait I'm sending you error log in parts. – Creator Jun 13 '19 at 18:10
  • 2019-06-13 23:31:54.653 31198-31216/? E/LB: fail to open file: No such file or directory 2019-06-13 23:31:55.560 31198-31198/com.abhishakkrmalviya.audioprofilechange E/AndroidRuntime: FATAL EXCEPTION: main Process: com.abhishakkrmalviya.audioprofilechange, PID: 31198 java.lang.SecurityException: Not allowed to change Do Not Disturb state at android.os.Parcel.createException(Parcel.java:1953) at android.os.Parcel.readException(Parcel.java:1921) at android.os.Parcel.readException(Parcel.java:1871) – Creator Jun 13 '19 at 18:11
  • at android.media.IAudioService$Stub$Proxy.setRingerModeExternal(IAudioService.java:1328) at android.media.AudioManager.setRingerMode(AudioManager.java:1146) at com.abhishakkrmalviya.audioprofilechange.MainActivity$1.onClick(MainActivity.java:34) at android.view.View.performClick(View.java:6614) at android.view.View.performClickInternal(View.java:6591) at android.view.View.access$3100(View.java:786) at android.view.View$PerformClick.run(View.java:25948) – Creator Jun 13 '19 at 18:11
  • at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6806) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) – Creator Jun 13 '19 at 18:12
  • Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.audio.AudioService.setRingerModeExternal(AudioService.java:2605) at android.media.IAudioService$Stub.onTransact(IAudioService.java:247) at android.os.Binder.execTransact(Binder.java:733) – Creator Jun 13 '19 at 18:12
  • Any reason why you’re setting the toast to a variable which is never used after it is shown? – Edric Jun 23 '19 at 08:44

1 Answers1

0

try to add this permission in manifest.xml

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" 
Mohammad Sommakia
  • 1,773
  • 3
  • 15
  • 48