Skip to content

Commit 8c2f8a0

Browse files
authored
Merge pull request #8 from saibotd/master
General update and possibility for additional packages
2 parents 6b7ebd5 + f034635 commit 8c2f8a0

File tree

4 files changed

+53
-23
lines changed

4 files changed

+53
-23
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
import RNLockTask from 'react-native-lock-task';
9191

9292
RNLockTask.startLockTask();
93+
RNLockTask.startLockTaskWith(["com.google.android.youtube", "com.sega.sonicdash"]);
9394
RNLockTask.stopLockTask();
9495
RNLockTask.clearDeviceOwnerApp();
9596
```

android/build.gradle

+6-5
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ buildscript {
66
}
77

88
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.3.2'
9+
classpath 'com.android.tools.build:gradle:4.0.0'
1010
}
1111
}
1212

1313
apply plugin: 'com.android.library'
1414

1515
android {
16-
compileSdkVersion 28
16+
compileSdkVersion 29
1717

1818
defaultConfig {
19-
minSdkVersion 16
20-
targetSdkVersion 28
19+
minSdkVersion 21
20+
targetSdkVersion 29
2121
versionCode 1
2222
versionName "1.0"
2323
}
@@ -28,9 +28,10 @@ android {
2828

2929
repositories {
3030
mavenCentral()
31+
google()
3132
}
3233

3334
dependencies {
34-
compile 'com.facebook.react:react-native:+'
35+
implementation 'com.facebook.react:react-native:+'
3536
}
3637

android/src/main/java/com/rnlocktask/RNLockTaskModule.java

+41-13
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,29 @@
22
package com.rnlocktask;
33

44
import android.app.Activity;
5-
import android.view.WindowManager;
65
import android.app.admin.DevicePolicyManager;
76
import android.content.ComponentName;
87
import android.content.Context;
9-
import android.os.Build;
108

9+
import com.facebook.react.bridge.Promise;
1110
import com.facebook.react.bridge.ReactApplicationContext;
1211
import com.facebook.react.bridge.ReactContextBaseJavaModule;
1312
import com.facebook.react.bridge.ReactMethod;
14-
import com.facebook.react.bridge.Callback;
13+
import com.facebook.react.bridge.ReadableArray;
14+
15+
import java.util.ArrayList;
1516

1617
public class RNLockTaskModule extends ReactContextBaseJavaModule {
1718

18-
private final ReactApplicationContext reactContext;
19+
20+
private static final String ACTIVITY_GONE = "ACTIVITY_GONE";
21+
private static final String DEVICE_OWNER_CLEARED = "DEVICE_OWNER_CLEARED";
22+
private static final String LOCKED_TASK = "LOCKED_TASK";
23+
private static final String LOCKED_TASK_AS_OWNER = "LOCKED_TASK_AS_OWNER";
24+
private static final String UNLOCKED_TASK = "UNLOCKED_TASK";
1925

2026
public RNLockTaskModule(ReactApplicationContext reactContext) {
2127
super(reactContext);
22-
this.reactContext = reactContext;
2328
}
2429

2530
@Override
@@ -28,45 +33,68 @@ public String getName() {
2833
}
2934

3035
@ReactMethod
31-
public void clearDeviceOwnerApp() {
36+
public void clearDeviceOwnerApp(Promise promise) {
3237
try {
33-
Activity mActivity = reactContext.getCurrentActivity();
38+
Activity mActivity = getCurrentActivity();
3439
if (mActivity != null) {
3540
DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) mActivity.getSystemService(Context.DEVICE_POLICY_SERVICE);
3641
myDevicePolicyManager.clearDeviceOwnerApp(mActivity.getPackageName());
42+
promise.resolve(DEVICE_OWNER_CLEARED);
3743
}
44+
promise.reject(ACTIVITY_GONE, "Activity gone or mismatch");
3845
} catch (Exception e) {
46+
promise.reject(e);
3947
}
4048
}
4149

4250
@ReactMethod
43-
public void startLockTask() {
51+
public void startLockTaskWith(ReadableArray additionalPackages, Promise promise) {
4452
try {
45-
Activity mActivity = reactContext.getCurrentActivity();
53+
Activity mActivity = getCurrentActivity();
4654
if (mActivity != null) {
4755
DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) mActivity.getSystemService(Context.DEVICE_POLICY_SERVICE);
4856
ComponentName mDPM = new ComponentName(mActivity, MyAdmin.class);
4957

5058
if (myDevicePolicyManager.isDeviceOwnerApp(mActivity.getPackageName())) {
51-
String[] packages = {mActivity.getPackageName()};
52-
myDevicePolicyManager.setLockTaskPackages(mDPM, packages);
59+
ArrayList<String> packages = new ArrayList<>();
60+
packages.add(mActivity.getPackageName());
61+
if(additionalPackages != null){
62+
for (int i = 0; i < additionalPackages.size(); i++) {
63+
packages.add(additionalPackages.getString(i));
64+
}
65+
}
66+
myDevicePolicyManager.setLockTaskPackages(mDPM, packages.toArray(new String[0]));
5367
mActivity.startLockTask();
68+
promise.resolve(LOCKED_TASK_AS_OWNER);
5469
} else {
5570
mActivity.startLockTask();
71+
promise.resolve(LOCKED_TASK);
5672
}
73+
} else{
74+
promise.reject(ACTIVITY_GONE, "Activity gone or mismatch");
5775
}
5876
} catch (Exception e) {
77+
promise.reject(e);
5978
}
6079
}
6180

6281
@ReactMethod
63-
public void stopLockTask() {
82+
public void startLockTask(Promise promise) {
83+
startLockTaskWith(null, promise);
84+
}
85+
86+
@ReactMethod
87+
public void stopLockTask(Promise promise) {
6488
try {
65-
Activity mActivity = reactContext.getCurrentActivity();
89+
Activity mActivity = getCurrentActivity();
6690
if (mActivity != null) {
6791
mActivity.stopLockTask();
92+
promise.resolve(UNLOCKED_TASK);
93+
} else {
94+
promise.reject(ACTIVITY_GONE, "Activity gone or mismatch");
6895
}
6996
} catch (Exception e) {
97+
promise.reject(e);
7098
}
7199
}
72100
}

android/src/main/java/com/rnlocktask/RNLockTaskPackage.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11

22
package com.rnlocktask;
33

4-
import java.util.Arrays;
5-
import java.util.Collections;
6-
import java.util.List;
7-
84
import com.facebook.react.ReactPackage;
5+
import com.facebook.react.bridge.JavaScriptModule;
96
import com.facebook.react.bridge.NativeModule;
107
import com.facebook.react.bridge.ReactApplicationContext;
118
import com.facebook.react.uimanager.ViewManager;
12-
import com.facebook.react.bridge.JavaScriptModule;
9+
10+
import java.util.Arrays;
11+
import java.util.Collections;
12+
import java.util.List;
1313
public class RNLockTaskPackage implements ReactPackage {
1414
@Override
1515
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {

0 commit comments

Comments
 (0)