浏览代码

Merge branch 'release' into develop

Beautus 7 年之前
父节点
当前提交
441c7d1bda

+ 2 - 2
app/build.gradle

@@ -12,8 +12,8 @@ android {
         applicationId "com.sduduzog.slimlauncher"
         minSdkVersion 16
         targetSdkVersion 28
-        versionCode 21
-        versionName "2.1.2"
+        versionCode 23
+        versionName "2.2.1"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         vectorDrawables.useSupportLibrary = true
     }

+ 11 - 0
app/src/main/AndroidManifest.xml

@@ -29,6 +29,17 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <receiver
+            android:name=".SlimAdminReceiver"
+            android:permission="android.permission.BIND_DEVICE_ADMIN">
+            <meta-data
+                android:name="android.app.device_admin"
+                android:resource="@xml/admin"/>
+
+            <intent-filter>
+                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
+            </intent-filter>
+        </receiver>
     </application>
 
 </manifest>

+ 6 - 0
app/src/main/java/com/sduduzog/slimlauncher/SlimAdminReceiver.kt

@@ -0,0 +1,6 @@
+package com.sduduzog.slimlauncher
+
+import android.app.admin.DeviceAdminReceiver
+
+class SlimAdminReceiver : DeviceAdminReceiver() {
+}

+ 10 - 5
app/src/main/java/com/sduduzog/slimlauncher/data/DataRepository.kt

@@ -6,11 +6,13 @@ import android.content.pm.PackageManager
 import android.content.pm.ResolveInfo
 import android.os.AsyncTask
 import androidx.lifecycle.LiveData
+import com.sduduzog.slimlauncher.BuildConfig
 import java.util.*
 
 class DataRepository(application: Application) {
 
     private val db: DataRoomDatabase = DataRoomDatabase.getDatabase(application)!!
+    private val packageName = application.packageName
     private val appDao: AppDao = db.appDao()
     private val noteDao: NoteDao = db.noteDao()
     private var _apps: LiveData<List<App>> = appDao.apps
@@ -106,14 +108,17 @@ class DataRepository(application: Application) {
 
             main.addCategory(Intent.CATEGORY_LAUNCHER)
 
-            val launchables = pm.queryIntentActivities(main, 0)
-            Collections.sort(launchables,
+            val activitiesList = pm.queryIntentActivities(main, 0)
+            Collections.sort(activitiesList.filter {
+
+                it.activityInfo.packageName != BuildConfig.APPLICATION_ID
+            },
                     ResolveInfo.DisplayNameComparator(pm))
             mAsyncTaskDao.deleteAll() // Need to find a less expensive way of doing this
-            for (i in launchables.indices) {
-                val item = launchables[i]
+            for (i in activitiesList.indices) {
+                val item = activitiesList[i]
                 val activity = item.activityInfo
-                val app = App(launchables[i].loadLabel(pm).toString(), activity.applicationInfo.packageName, activity.name)
+                val app = App(activitiesList[i].loadLabel(pm).toString(), activity.applicationInfo.packageName, activity.name)
                 mAsyncTaskDao.insert(app)
             }
             return null

+ 28 - 16
app/src/main/java/com/sduduzog/slimlauncher/ui/main/MainFragment.kt

@@ -9,7 +9,6 @@ import android.os.Bundle
 import android.provider.AlarmClock
 import android.provider.MediaStore
 import android.provider.Settings
-import android.util.Log
 import android.view.*
 import android.widget.FrameLayout
 import androidx.core.app.ActivityCompat
@@ -94,17 +93,12 @@ class MainFragment : StatusBarThemeFragment(), MainActivity.OnBackPressedListene
 
     private fun setEventListeners() {
 
-        main.setOnTouchListener(homeClickListener)
-
+        main.setOnClickListener(homeClickListener)
         mainAppsList.setOnTouchListener(homeClickListener)
 
         clockTextView.setOnClickListener {
             try {
-                val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
-                    Intent(AlarmClock.ACTION_SHOW_ALARMS)
-                } else {
-                    alternativeClockIntent()
-                }
+                val intent = alternativeClockIntent()
                 intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
                 val left = 0
                 val top = 0
@@ -245,7 +239,7 @@ class MainFragment : StatusBarThemeFragment(), MainActivity.OnBackPressedListene
 
     private fun alternativeClockIntent(): Intent {
         val alarmClockIntent = Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER)
-
+        val pm = activity!!.packageManager
 // Verify clock implementation
         val clockImpls = arrayOf(arrayOf("HTC Alarm Clock", "com.htc.android.worldclock", "com.htc.android.worldclock.WorldClockTabControl"), arrayOf("Standar Alarm Clock", "com.android.deskclock", "com.android.deskclock.AlarmClock"), arrayOf("Froyo Nexus Alarm Clock", "com.google.android.deskclock", "com.android.deskclock.DeskClock"), arrayOf("Moto Blur Alarm Clock", "com.motorola.blur.alarmclock", "com.motorola.blur.alarmclock.AlarmClock"), arrayOf("Samsung Galaxy Clock", "com.sec.android.app.clockpackage", "com.sec.android.app.clockpackage.ClockPackage"), arrayOf("Sony Ericsson Xperia Z", "com.sonyericsson.organizer", "com.sonyericsson.organizer.Organizer_WorldClock"), arrayOf("ASUS Tablets", "com.asus.deskclock", "com.asus.deskclock.DeskClock"))
 
@@ -256,16 +250,25 @@ class MainFragment : StatusBarThemeFragment(), MainActivity.OnBackPressedListene
             val className = clockImpls[i][2]
             val cn = ComponentName(packageName, className)
             alarmClockIntent.component = cn
-            foundClockImpl = true
+            if (alarmClockIntent.resolveActivity(pm) != null)
+                foundClockImpl = true
         }
 
         if (!foundClockImpl) {
             throw Exception()
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            val i = Intent(AlarmClock.ACTION_SHOW_ALARMS)
+            if (alarmClockIntent.resolveActivity(pm) != null) {
+                return i
+            } else {
+                throw Exception("No clock activity found for the intent")
+            }
+        } else {
+            throw Exception("No clock activity found for the intent")
         }
-        return alarmClockIntent
-
     }
 
+
     private fun doBounceAnimation(targetView: View) {
         targetView.animate()
                 .setStartDelay(500)
@@ -310,20 +313,29 @@ class MainFragment : StatusBarThemeFragment(), MainActivity.OnBackPressedListene
         }
     }
 
-    inner class HomeDoubleClickListener : View.OnTouchListener {
+    inner class HomeDoubleClickListener : View.OnTouchListener, DoubleClickListener() {
 
         private val gestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() {
             override fun onDoubleTap(e: MotionEvent?): Boolean {
-                Log.d("MAIN", "double click")
+                performLock()
                 return super.onDoubleTap(e)
             }
         })
 
         @SuppressLint("ClickableViewAccessibility")
         override fun onTouch(p0: View?, p1: MotionEvent?): Boolean {
-            gestureDetector.onTouchEvent(p1)
-            return true
+            return gestureDetector.onTouchEvent(p1)
+        }
+
+        override fun onDoubleClick(v: View) {
+            performLock()
         }
+
+        override fun onSingleClick(v: View) {
+
+        }
+
+        private fun performLock() {}
     }
 
     companion object {

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/ui/main/notes/NoteFragment.kt

@@ -28,7 +28,7 @@ class NoteFragment : Fragment(), Observer {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         arguments.let {
-            note = if (it!!.containsKey("note")) {
+            note = if (it !=null && it.containsKey("note")) {
                 it.get("note") as Note
             } else {
                 Note("", -1L)

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -53,7 +53,7 @@
     <string name="settings_button_change_theme">Change</string>
     <string name="about_title">Slim launcher</string>
     <string name="about_text">
-    Slim v2.1.2 \u00a9 2018\n\nSource : <a href="https://github.com/sduduzog/slim-launcher">https://github.com/sduduzog/slim-launcher</a>\n\n<a href="mailto:gumedesduduzo@gmail.com">gumedesduduzo@gmail.com</a>\n\nBecome a tester <a href="https://play.google.com/apps/testing/com.sduduzog.slimlauncher">Click here</a>
+    Slim v2.2.1 \u00a9 2019\n\nSource : <a href="https://github.com/sduduzog/slim-launcher">https://github.com/sduduzog/slim-launcher</a>\n\n<a href="mailto:gumedesduduzo@gmail.com">gumedesduduzo@gmail.com</a>\n\nBecome a tester <a href="https://play.google.com/apps/testing/com.sduduzog.slimlauncher">Click here</a>
     </string>
     <string name="theme_chooser_dialog_title">Change theme</string>
     <string name="main_call_icon">call icon</string>

+ 6 - 0
app/src/main/res/xml/admin.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<device-admin>
+    <uses-policies>
+        <force-lock />
+    </uses-policies>
+</device-admin>