diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 76e328b..e6c59c2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,19 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/beautycoder/applicationlockscreenexample/Admin.java b/app/src/main/java/com/beautycoder/applicationlockscreenexample/Admin.java
new file mode 100644
index 0000000..0c42e7c
--- /dev/null
+++ b/app/src/main/java/com/beautycoder/applicationlockscreenexample/Admin.java
@@ -0,0 +1,20 @@
+package com.beautycoder.applicationlockscreenexample;
+
+import android.app.admin.DeviceAdminReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.Toast;
+
+public class Admin extends DeviceAdminReceiver {
+ @Override
+ public void onEnabled(Context context, Intent intent) {
+ Toast.makeText(context, "Enabled Permission", Toast.LENGTH_SHORT).show();
+ super.onEnabled(context, intent);
+ }
+
+ @Override
+ public void onDisabled(Context context, Intent intent) {
+ Toast.makeText(context, "Disabled Permission", Toast.LENGTH_SHORT).show();
+ super.onDisabled(context, intent);
+ }
+}
diff --git a/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainActivity.java b/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainActivity.java
index 8ac9e5d..ccc81af 100644
--- a/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainActivity.java
+++ b/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainActivity.java
@@ -55,6 +55,9 @@ public void onFingerprintSuccessful() {
@Override
public void onPinLoginFailed() {
Toast.makeText(MainActivity.this, "Pin failed", Toast.LENGTH_SHORT).show();
+ PFCodeView pfCodeView;
+ pfCodeView = findViewById(R.id.code_view);
+ pfCodeView.clearCode();
}
@Override
@@ -120,5 +123,11 @@ private void showMainFragment() {
.replace(R.id.container_view, fragment).commit();
}
-
-}
+ @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
+ @Override
+ public void onBackPressed() {
+ super.onBackPressed();
+ finishAffinity();
+ finish();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainFragment.java b/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainFragment.java
index 0869c98..09f2178 100644
--- a/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainFragment.java
+++ b/app/src/main/java/com/beautycoder/applicationlockscreenexample/MainFragment.java
@@ -12,12 +12,71 @@
*/
public class MainFragment extends Fragment {
+ ComponentName componentName;
+ DevicePolicyManager devicePolicyManager;
+ Button lock, enable;
+ public static final int RESULT_ENABLE = 11;
+ private ActivityManager activityManager;
+
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_main, container, false);
+
+ devicePolicyManager = (DevicePolicyManager) getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);
+ activityManager = (ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE);
+ componentName = new ComponentName(getActivity(), Admin.class);
+
+ lock = view.findViewById(R.id.lock);
+ enable = view.findViewById(R.id.enable);
+
+ lock.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ boolean active = devicePolicyManager.isAdminActive(componentName);
+ if (active) {
+ startActivity(new Intent(getContext(), MainActivity.class));
+ devicePolicyManager.lockNow();
+ } else {
+ Toast.makeText(getContext(), "You need to enable the Admin Device Features", Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+
+ enable.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
+ intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
+ intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Required Permission");
+ startActivityForResult(intent, RESULT_ENABLE);
+ }
+ });
return view;
}
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ boolean isActive = devicePolicyManager.isAdminActive(componentName);
+ enable.setVisibility(isActive ? View.GONE : View.VISIBLE);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ switch (requestCode) {
+ case RESULT_ENABLE:
+ if (resultCode == getActivity().RESULT_OK) {
+ Toast.makeText(getContext(), "You have enabled the Admin Device features", Toast.LENGTH_SHORT).show();
+ } else if (resultCode == getActivity().RESULT_FIRST_USER) {
+ Toast.makeText(getContext(), "Enabled Permission", Toast.LENGTH_SHORT).show();
+ } else {
+ Toast.makeText(getContext(), "Problem to enable the Admin Device features", Toast.LENGTH_SHORT).show();
+ }
+ break;
+ }
+ super.onActivityResult(requestCode, resultCode, data);
+ }
}
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
index 279fedf..16fcfd8 100644
--- a/app/src/main/res/layout/fragment_main.xml
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -1,12 +1,37 @@
-
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/policies.xml b/app/src/main/res/xml/policies.xml
new file mode 100644
index 0000000..e69de29