From c07f9809d31a90091c759e490987a6c15a76aaae Mon Sep 17 00:00:00 2001 From: Neeleshwar Kumar Date: Tue, 13 Oct 2020 23:44:41 +0530 Subject: [PATCH] Bug fix and lock screen feature added --- app/src/main/AndroidManifest.xml | 13 ++++ .../applicationlockscreenexample/Admin.java | 20 +++++++ .../MainActivity.java | 13 +++- .../MainFragment.java | 59 +++++++++++++++++++ app/src/main/res/layout/fragment_main.xml | 37 ++++++++++-- app/src/main/res/xml/policies.xml | 0 6 files changed, 134 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/com/beautycoder/applicationlockscreenexample/Admin.java create mode 100644 app/src/main/res/xml/policies.xml 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"> + + + +