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"> + + + +