Quellcode durchsuchen

start double tap to lock feature

sduduzog vor 7 Jahren
Ursprung
Commit
f11c88d2a0

+ 18 - 5
app/src/main/java/com/sduduzog/slimlauncher/MainActivity.kt

@@ -1,10 +1,12 @@
 package com.sduduzog.slimlauncher
 
+import android.content.Intent
 import android.content.SharedPreferences
 import android.content.pm.PackageManager
 import android.content.res.Resources
 import android.os.Bundle
 import android.view.View
+import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.ViewModelProviders
 import androidx.navigation.NavController
@@ -16,7 +18,6 @@ import com.sduduzog.slimlauncher.ui.main.MainViewModel
 class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener, NavController.OnDestinationChangedListener {
 
     // TODO: Clickable apps while in preferences, intuitiveness
-    // TODO: Lock screen on double tap
     // TODO: Move some apps to bottom sheet.
 
     private lateinit var settings: SharedPreferences
@@ -107,7 +108,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
     override fun onRequestPermissionsResult(requestCode: Int,
                                             permissions: Array<String>, grantResults: IntArray) {
         when (requestCode) {
-            REQUEST_PHONE_CALL -> {
+            REQUEST_CODE_PHONE_CALL -> {
                 // If request is cancelled, the result arrays are empty.
                 if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                     navigator.navigate(R.id.action_mainFragment_to_dialerFragment)
@@ -116,8 +117,19 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
                 }
                 return
             }
-        }// other 'case' lines to check for other
-        // permissions this app might request
+        }
+
+
+    }
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        if (requestCode == REQUEST_CODE_ENABLE_ADMIN) {
+            if (resultCode == RESULT_OK) {
+                Toast.makeText(applicationContext, "Registered As Admin", Toast.LENGTH_SHORT).show()
+            } else {
+                Toast.makeText(applicationContext, "Failed to register as Admin", Toast.LENGTH_SHORT).show()
+            }
+        }
     }
 
     private fun showSystemUI() {
@@ -163,7 +175,8 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
             return R.style.AppTheme
         }
 
-        const val REQUEST_PHONE_CALL = 1
+        const val REQUEST_CODE_PHONE_CALL = 1
+        const val REQUEST_CODE_ENABLE_ADMIN = 2
     }
 
     interface OnBackPressedListener {

+ 11 - 1
app/src/main/java/com/sduduzog/slimlauncher/ui/main/MainFragment.kt

@@ -335,7 +335,17 @@ class MainFragment : StatusBarThemeFragment(), MainActivity.OnBackPressedListene
 
         }
 
-        private fun performLock() {}
+        private fun performLock() {
+//            val mComponentName = ComponentName(context!!, SlimAdminReceiver::class.java)
+//            val mDevicePolicyManager = activity!!.getSystemService(
+//                    Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
+//            val isAdmin = mDevicePolicyManager.isAdminActive(mComponentName)
+//            if (isAdmin) {
+//                mDevicePolicyManager.lockNow()
+//            } else {
+//                MakeSlimAdminDialog().show(childFragmentManager, "Admin Dialog")
+//            }
+        }
     }
 
     companion object {

+ 39 - 0
app/src/main/java/com/sduduzog/slimlauncher/ui/main/MakeSlimAdminDialog.kt

@@ -0,0 +1,39 @@
+package com.sduduzog.slimlauncher.ui.main
+
+import android.app.AlertDialog
+import android.app.Dialog
+import android.app.admin.DevicePolicyManager
+import android.content.ComponentName
+import android.content.Intent
+import android.os.Bundle
+import androidx.fragment.app.DialogFragment
+import com.sduduzog.slimlauncher.MainActivity.Companion.REQUEST_CODE_ENABLE_ADMIN
+import com.sduduzog.slimlauncher.R
+import com.sduduzog.slimlauncher.SlimAdminReceiver
+
+
+class MakeSlimAdminDialog : DialogFragment() {
+
+    private var mComponentName: ComponentName? = null
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        mComponentName = ComponentName(context!!, SlimAdminReceiver::class.java)
+    }
+
+    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+
+        val builder = AlertDialog.Builder(context!!)
+
+        builder.setTitle(getString(R.string.main_admin_title))
+        builder.setMessage(getString(R.string.main_admin_message))
+        builder.setNegativeButton("no, thanks") { _, _ -> }
+        builder.setPositiveButton("activate") { _, _ ->
+            val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)
+            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName)
+            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, getString(R.string.main_admin_message))
+            startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN)
+        }
+        return builder.create()
+    }
+}

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -103,6 +103,8 @@
 
     <!-- Content Description For Image Resources-->
     <string name="content_description_my_phone">My phone</string>
+    <string name="main_admin_title">Allow Slim to lock your device</string>
+    <string name="main_admin_message">Double tapping on the free space on your home screen locks your device instantly.</string>
 
 
 </resources>