react-native-screen-brightness icon indicating copy to clipboard operation
react-native-screen-brightness copied to clipboard

[ERROR] Android: Unable to set system brightness

Open pabichw opened this issue 6 years ago • 7 comments

When trying to call:

ScreenBrightness.setBrightness(value) .then(() => {}, e => console.log('ERROR: ', e)) I receive this console log:

11-21 12:47:45.631 17605 17713 I ReactNativeJS: 'ERROR: ', { [Error: Unable to set system brightness] 11-21 12:47:45.631 17605 17713 I ReactNativeJS: framesToPop: 1, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: nativeStackAndroid: 11-21 12:47:45.631 17605 17713 I ReactNativeJS: [ { methodName: 'setSystemBrightness', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 192, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'ScreenBrightnessModule.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'setBrightness', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 271, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'ScreenBrightnessModule.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'invoke', lineNumber: -2, file: 'Method.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'invoke', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 372, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'JavaMethodWrapper.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'invoke', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 158, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'JavaModuleWrapper.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'run', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: -2, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'NativeRunnable.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'handleCallback', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 794, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'Handler.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'dispatchMessage', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 99, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'Handler.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'dispatchMessage', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 29, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'MessageQueueThreadHandler.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'loop', lineNumber: 176, file: 'Looper.java' } ], 11-21 12:47:45.631 17605 17713 I ReactNativeJS: userInfo: null

Happens on Android only. Works fine on iOS

pabichw avatar Nov 21 '19 11:11 pabichw

Have you added the following permission?

<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />

You can visit Control Device Brightness from React Native App for a clear idea.

AboutReact avatar Dec 08 '19 16:12 AboutReact

Adding permission is not enough, you have to ask user to enable this permission fe. using PermissionsAndroid.

HonzaJiran avatar Jan 08 '20 12:01 HonzaJiran

Adding permission is not enough, you have to ask user to enable this permission fe. using PermissionsAndroid.

I tested PermissionsAndroid on RN 0.61.2 and it doesn't offer access to WRITE_SETTINGS and it'll throw an error instead.

Of course it'd be great if some developer with skills would update the library to support Android X access to system level.

hakoniemi avatar Feb 24 '20 11:02 hakoniemi

Adicionar permissão não é suficiente, você deve pedir ao usuário para habilitar esta permissão fe. usando PermissionsAndroid.

Testei o PermissionsAndroid no RN 0.61.2 e ele não oferece acesso ao WRITE_SETTINGS e, em vez disso, gera um erro.

É claro que seria ótimo se algum desenvolvedor com habilidades atualizasse a biblioteca para oferecer suporte ao acesso do Android X ao nível do sistema.

Did you manage to solve this in some way for android ??

kkkasio avatar Jul 29 '20 16:07 kkkasio

Have you added the following permission?

<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />

You can visit Control Device Brightness from React Native App for a clear idea.

version react-native: 0.59.10 not working with permission

tunm2020 avatar Aug 11 '20 03:08 tunm2020

When trying to call:

ScreenBrightness.setBrightness(value) .then(() => {}, e => console.log('ERROR: ', e)) I receive this console log:

11-21 12:47:45.631 17605 17713 I ReactNativeJS: 'ERROR: ', { [Error: Unable to set system brightness] 11-21 12:47:45.631 17605 17713 I ReactNativeJS: framesToPop: 1, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: nativeStackAndroid: 11-21 12:47:45.631 17605 17713 I ReactNativeJS: [ { methodName: 'setSystemBrightness', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 192, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'ScreenBrightnessModule.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'setBrightness', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 271, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'ScreenBrightnessModule.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'invoke', lineNumber: -2, file: 'Method.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'invoke', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 372, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'JavaMethodWrapper.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'invoke', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 158, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'JavaModuleWrapper.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'run', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: -2, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'NativeRunnable.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'handleCallback', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 794, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'Handler.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'dispatchMessage', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 99, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'Handler.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'dispatchMessage', 11-21 12:47:45.631 17605 17713 I ReactNativeJS: lineNumber: 29, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: file: 'MessageQueueThreadHandler.java' }, 11-21 12:47:45.631 17605 17713 I ReactNativeJS: { methodName: 'loop', lineNumber: 176, file: 'Looper.java' } ], 11-21 12:47:45.631 17605 17713 I ReactNativeJS: userInfo: null

Happens on Android only. Works fine on iOS

Have you solved this problem yet and give me the solution..please!

tunm2020 avatar Aug 11 '20 03:08 tunm2020

It's not working because you don't have the permission to change the setting. The ScreenBrightness module has functions exposed to React Native to ask for those permissions

Change your manifest to: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.kiter" xmlns:tools="http://schemas.android.com/tools">

And add:

<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions"/>

Next before using the setBrightness method in JS add this: let hasPerm = await ScreenBrightness.hasPermission();

					if(!hasPerm){
						 ScreenBrightness.requestPermission();
						 return;
					}

I've updated the documentation as well, somebody should make my changes available soon I guess on the docs.

herbertvuijk avatar Aug 12 '20 09:08 herbertvuijk