У меня есть приложение со следующим кодом в MainActivity.java:
package com.MyApp;
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
import android.view.Window;
import android.view.WindowManager;
import android.os.Bundle;
import com.MyApp.CustomLockscreenPackage;
public class MainActivity extends ReactActivity {
@Override
protected String getMainComponentName() {
return "MyApp";
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window w = getWindow();
w.setFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
);
}
@Override
protected ReactActivityDelegate createReactActivityDelegate() {
return new ReactActivityDelegate(this, getMainComponentName()) {
@Override
protected ReactRootView createRootView() {
return new RNGestureHandlerEnabledRootView(MainActivity.this);
}
};
}
}
Строки, которые обеспечивают работу приложения на экране блокировки:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window w = getWindow();
w.setFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
);
}
Но все приложение работает на экране блокировки, и мне нужно, чтобы на экране блокировки работали только определенные экраны (это приложение для звонков).
Я пытался создать собственный модуль, но не получилось.
Я знаю, что можно удалить флаги с помощью:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
Итак, если я смогу вызвать эти строки на своем собственном экране реагирования, это, вероятно, сработает.
[EDIT]: я создал модуль, который делает это за меня: response-native-keep-awake
[EDIT]: Как использовать мой модуль:
прежде всего, установите его:
npm install --save https://github.com/willnaoosmit/react-n ... ep-visible
(или пряжей, если хотите)
затем:
import KeepAwake from 'react-native-keep-awake'; #import the module, of course
KeepAwake.activate(); #when you want to use the app on the lockscreen
KeepAwake.deactivate(); #when you dont want to use the app on the lockscreen anymore
Подробнее здесь: https://stackoverflow.com/questions/596 ... lockscreen