App has button in the middle That switches between brightness, but right now, if button is clicked twice and i try clicking it again it does not function anymore. Does anyone know how to put screen brightness to previous state before the button was clicked after the button is clicked the second time. Overall the app keeps getting error log when clicking the button. Thanks in advance if someone can figure this out! Here is the error log:
W/System.err: java.lang.SecurityException: com.example.kenert.allinoneapp was not granted this permission: android.permission.WRITE_SETTINGS.
W/System.err: at android.os.Parcel.readException(Parcel.java:1684)
W/System.err: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
W/System.err: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
W/System.err: at android.content.ContentProviderProxy.call(ContentProviderNative.java:646)
W/System.err: at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:1595)
W/System.err: at android.provider.Settings$System.putStringForUser(Settings.java:1966)
W/System.err: at android.provider.Settings$System.putIntForUser(Settings.java:2071)
W/System.err: at android.provider.Settings$System.putInt(Settings.java:2065)
W/System.err: at com.example.kenert.allinoneapp.ScreenFlashlight$override.turnBrightnessOff(ScreenFlashlight.java:60)
W/System.err: at com.example.kenert.allinoneapp.ScreenFlashlight$override.screenFlashButtonClicked(ScreenFlashlight.java:28)
W/System.err: at com.example.kenert.allinoneapp.ScreenFlashlight$override.access$dispatch(ScreenFlashlight.java)
W/System.err: at com.example.kenert.allinoneapp.ScreenFlashlight.screenFlashButtonClicked(ScreenFlashlight.java:0)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
W/System.err: at android.view.View.performClick(View.java:5637)
W/System.err: at android.view.View$PerformClick.run(View.java:22429)
W/System.err: at android.os.Handler.handleCallback(Handler.java:751)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err: at android.os.Looper.loop(Looper.java:154)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6119)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Here is the code of the class :
import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageButton;
public class ScreenFlashlight extends AppCompatActivity {
private boolean brightnessOnOff;
private ImageButton screenFlashOnOffButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_flashlight);
screenFlashOnOffButton = (ImageButton) findViewById(R.id.screenFlashOnOffButton);
brightnessOnOff = false;
}
public void screenFlashButtonClicked(View view) {
try {
if (brightnessOnOff) {
turnBrightnessOff();
} else{
brightnessOnOff = true;
turnBrightnessOn();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void turnBrightnessOn() {
try {
screenFlashOnOffButton.setImageResource(R.drawable.screenonbutton);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, 255);
//Screen refresh to add brightness
int brightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = (float) brightness / 255;
getWindow().setAttributes(lp);
} catch (Exception e) {
e.printStackTrace();
}
}
private void turnBrightnessOff() {
try {
screenFlashOnOffButton.setImageResource(R.drawable.screenoffbutton);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, 100);
//Refresh screen
int brightnesss = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
WindowManager.LayoutParams lpp = getWindow().getAttributes();
lpp.screenBrightness = (float) brightnesss/100;
getWindow().setAttributes(lpp);
} catch (Exception e) {
e.printStackTrace();
}
}