A react native module to control the Keyguard.
npm install react-native-interactable --save
- Link the native library to your project
react-native link react-native-interactable
- Rebuild app from your project root directory
react-native run-android
importKeyguardfrom'react-native-keyguard'/* Keyguard returns a promise when the lockscreen is opened.Android does not provide Keyguard control before 21. The promise will be resolved by default in such cases */Keyguard.unlock(title,desctiption).then(()=>console.log("Success")).catch(error=>console.log("Error",error))- update
android/settings.gradle - update
android/app/build.gradle - Register module in MainActivity.java or MainApplication.java (depending on your RN version)
- Rebuild and restart package manager
android/settings.gradle
...
include ':react-native-keyguard'
project(':react-native-keyguard').projectDir =newFile(settingsDir, '../node_modules/react-native-keyguard/android')android/app/build.gradle
...
dependencies {
...
compile project(':react-native-keyguard')
}- register module on React Native >= 0.30 (in MainApplication.java)
importcom.facebook.react.ReactActivity;
importcom.facebook.react.ReactPackage;
importcom.facebook.react.shell.MainReactPackage;
importjava.util.Arrays;
importjava.util.List;
importme.neo.keyguard.KeyguardPackage; // <--- importpublicclassMainApplicationextendsApplicationimplementsReactApplication {
[...]
privatefinalReactNativeHostmReactNativeHost = newReactNativeHost(this) {
@OverrideprotectedbooleangetUseDeveloperSupport() {
returnBuildConfig.DEBUG;
}
@OverrideprotectedList<ReactPackage> getPackages() {
returnArrays.<ReactPackage>asList(
newMainReactPackage(),
newKeyguardPackage() // <------- add package
);
}
}
}- register module on React Native >= 0.19 and RN < 0.30 (in MainActivity.java)
importcom.facebook.react.ReactActivity;
importcom.facebook.react.ReactPackage;
importcom.facebook.react.shell.MainReactPackage;
importjava.util.Arrays;
importjava.util.List;
importme.neo.keyguard.KeyguardPackage; // <--- importpublicclassMainActivityextendsReactActivity {
/** * Returns the name of the main component registered from JavaScript. * This is used to schedule rendering of the component. */@OverrideprotectedStringgetMainComponentName() {
return"SampleAppReact";
}
/** * Returns whether dev mode should be enabled. * This enables e.g. the dev menu. */@OverrideprotectedbooleangetUseDeveloperSupport() {
returnBuildConfig.DEBUG;
}
/** * A list of packages used by the app. If the app uses additional views * or modules besides the default ones, add more packages here. */@OverrideprotectedList<ReactPackage> getPackages() {
returnArrays.<ReactPackage>asList(
newMainReactPackage(),
newKeyguardPackage() // <------- add package
);
}
}- register module on React Native < 0.19 (in MainActivity.java)
importme.neo.keyguard.KeyguardPackage; // <--- importpublicclassMainActivityextendsActivityimplementsDefaultHardwareBackBtnHandler {
......
privatestaticActivitymActivity = null;
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = newReactRootView(this);
mActivity = this;
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(newMainReactPackage())
.addPackage(newKeyguardPackage()) // <------- add package
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "ExampleRN", null);
setContentView(mReactRootView);
}
......
}- Run
react-native run-androidfrom your project root directory