mirror of
https://github.com/jrpie/Launcher.git
synced 2025-02-23 06:21:31 +01:00
Simplify selection of default apps
The lists / priorities can now be changed in the `strings.xml` file.
This commit is contained in:
parent
49baed4d65
commit
83299d926f
2 changed files with 95 additions and 87 deletions
|
@ -1,5 +1,6 @@
|
|||
package com.finnmglas.launcher
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
|
@ -10,6 +11,20 @@ import android.net.Uri
|
|||
import android.provider.Settings
|
||||
import android.widget.Toast
|
||||
|
||||
/** Parsing functions */
|
||||
|
||||
// Related question: https://stackoverflow.com/q/3013655/12787264
|
||||
fun parseStringMap(stringArrayResourceId: Int, context: Context): HashMap<String, String>? {
|
||||
val stringArray: Array<String> =
|
||||
context.resources.getStringArray(stringArrayResourceId)
|
||||
val outputArray = HashMap<String, String>(stringArray.size)
|
||||
for (entry in stringArray) {
|
||||
val splitResult = entry.split("|").toTypedArray()
|
||||
outputArray.put(splitResult[0], splitResult[1])
|
||||
}
|
||||
return outputArray
|
||||
}
|
||||
|
||||
/** Activity related */
|
||||
|
||||
fun isInstalled(uri: String, context: Context): Boolean {
|
||||
|
@ -32,13 +47,16 @@ fun launchApp(packageName: String, context: Context) {
|
|||
|
||||
if (intent1 != null) {
|
||||
context.startActivity(intent1)
|
||||
//overridePendingTransition(0, 0)
|
||||
|
||||
if (context is Activity) {
|
||||
context.overridePendingTransition(0, 0)
|
||||
}
|
||||
} else {
|
||||
if (isInstalled(packageName, context)){
|
||||
|
||||
AlertDialog.Builder(context)
|
||||
.setTitle("Can't open app")
|
||||
.setMessage("Want to change its settings ('add it to the apps screen')?")
|
||||
.setTitle(context.getString(R.string.alert_cant_open_title))
|
||||
.setMessage(context.getString(R.string.alert_cant_open_message))
|
||||
.setPositiveButton(android.R.string.yes,
|
||||
DialogInterface.OnClickListener { dialog, which ->
|
||||
openAppSettings(packageName, context)
|
||||
|
@ -47,12 +65,12 @@ fun launchApp(packageName: String, context: Context) {
|
|||
.setIcon(android.R.drawable.ic_dialog_info)
|
||||
.show()
|
||||
} else {
|
||||
Toast.makeText( context, "Open settings to choose an app for this action", Toast.LENGTH_SHORT).show()
|
||||
Toast.makeText( context, context.getString(R.string.toast_cant_open_message), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Settings related */
|
||||
/** Settings related functions */
|
||||
|
||||
fun openAppSettings(pkg :String, context:Context){
|
||||
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
|
||||
|
@ -73,116 +91,56 @@ fun loadSettings(sharedPref : SharedPreferences){
|
|||
}
|
||||
|
||||
fun resetSettings(sharedPref : SharedPreferences, context: Context) : MutableList<String>{
|
||||
|
||||
val defaultList :MutableList<String> = mutableListOf<String>()
|
||||
|
||||
val editor: SharedPreferences.Editor = sharedPref.edit()
|
||||
|
||||
val (chosenUpName, chosenUpPackage) = pickDefaultUpApp(context)
|
||||
val (chosenUpName, chosenUpPackage) = pickDefaultApp("action_upApp", context)
|
||||
editor.putString("action_upApp", chosenUpPackage)
|
||||
defaultList.add(chosenUpName)
|
||||
|
||||
val (chosenDownName, chosenDownPackage) = pickDefaultDownApp(context)
|
||||
val (chosenDownName, chosenDownPackage) = pickDefaultApp("action_downApp", context)
|
||||
editor.putString("action_downApp", chosenDownPackage)
|
||||
defaultList.add(chosenDownName)
|
||||
|
||||
val (chosenRightName, chosenRightPackage) = pickDefaultRightApp(context)
|
||||
val (chosenRightName, chosenRightPackage) = pickDefaultApp("action_rightApp", context)
|
||||
editor.putString("action_rightApp", chosenRightPackage)
|
||||
defaultList.add(chosenRightName)
|
||||
|
||||
val (chosenLeftName, chosenLeftPackage) = pickDefaultLeftApp(context)
|
||||
val (chosenLeftName, chosenLeftPackage) = pickDefaultApp("action_leftApp", context)
|
||||
editor.putString("action_leftApp", chosenLeftPackage)
|
||||
editor.putString("action_calendarApp", chosenLeftPackage)
|
||||
defaultList.add(chosenLeftName)
|
||||
|
||||
val (chosenVolumeUpName, chosenVolumeUpPackage) = pickDefaultVolumeUpApp(context)
|
||||
val (chosenVolumeUpName, chosenVolumeUpPackage) = pickDefaultApp("action_volumeUpApp", context)
|
||||
editor.putString("action_volumeUpApp", chosenVolumeUpPackage)
|
||||
defaultList.add(chosenVolumeUpName)
|
||||
|
||||
val (chosenVolumeDownName, chosenVolumeDownPackage) = pickDefaultVolumeDownApp(context)
|
||||
val (chosenVolumeDownName, chosenVolumeDownPackage) = pickDefaultApp("action_volumeDownApp", context)
|
||||
editor.putString("action_volumeDownApp", chosenVolumeDownPackage)
|
||||
defaultList.add(chosenVolumeDownName)
|
||||
|
||||
// clockApp default
|
||||
editor.putString("action_clockApp", "com.sec.android.app.clockpackage")
|
||||
val (_, chosenClockPackage) = pickDefaultApp("action_clockApp", context)
|
||||
editor.putString("action_clockApp", chosenClockPackage)
|
||||
|
||||
editor.apply()
|
||||
|
||||
return defaultList // UP, DOWN, RIGHT, LEFT, VOLUME_UP, VOLUME_DOWN
|
||||
}
|
||||
|
||||
// Default upApps are Browsers
|
||||
fun pickDefaultUpApp(context :Context) : Pair<String, String>{
|
||||
if(isInstalled("org.mozilla.firefox", context))
|
||||
return Pair("Firefox", "org.mozilla.firefox")
|
||||
else if(isInstalled("com.android.chrome", context))
|
||||
return Pair("Chrome", "com.android.chrome")
|
||||
else if(isInstalled("com.sec.android.app.sbrowser", context))
|
||||
return Pair("Samsung Internet", "com.sec.android.app.sbrowser")
|
||||
else
|
||||
return Pair(context.getString(R.string.none_found), "")
|
||||
}
|
||||
fun pickDefaultApp(action: String, context: Context) : Pair<String, String>{
|
||||
val arrayResource = when (action) {
|
||||
"action_upApp" -> R.array.default_up
|
||||
"action_downApp" -> R.array.default_down
|
||||
"action_rightApp" -> R.array.default_right
|
||||
"action_leftApp" -> R.array.default_left
|
||||
"action_volumeUpApp" -> R.array.default_volume_up
|
||||
"action_volumeDownApp" -> R.array.default_volume_down
|
||||
"action_clockApp" -> R.array.default_clock
|
||||
else -> return Pair(context.getString(R.string.none_found), "") // just prevent crashing on unknown input
|
||||
}
|
||||
|
||||
// Default downApps are Internal Search Apps
|
||||
fun pickDefaultDownApp(context :Context) : Pair<String, String>{
|
||||
if(isInstalled("com.samsung.android.app.galaxyfinder", context))
|
||||
return Pair("GalaxyFinder", "com.samsung.android.app.galaxyfinder")
|
||||
else if(isInstalled("com.prometheusinteractive.voice_launcher", context))
|
||||
return Pair("VoiceSearch", "com.prometheusinteractive.voice_launcher")
|
||||
else
|
||||
return Pair(context.getString(R.string.none_found), "")
|
||||
}
|
||||
|
||||
// Default rightApps are Mailing Applications
|
||||
fun pickDefaultRightApp(context :Context) : Pair<String, String>{
|
||||
if(isInstalled("de.web.mobile.android.mail", context))
|
||||
return Pair("WebMail", "de.web.mobile.android.mail")
|
||||
else if(isInstalled("com.samsung.android.email.provider", context))
|
||||
return Pair("Samsung Mail", "com.samsung.android.email.provider")
|
||||
else if(isInstalled("com.google.android.gm", context))
|
||||
return Pair("Google Mail", "com.google.android.gm")
|
||||
else
|
||||
return Pair(context.getString(R.string.none_found), "")
|
||||
}
|
||||
|
||||
// Default leftApps are Calendar Applications
|
||||
fun pickDefaultLeftApp(context :Context) : Pair<String, String>{
|
||||
if(isInstalled("com.google.android.calendar", context))
|
||||
return Pair("Google Calendar", "com.google.android.calendar")
|
||||
else if(isInstalled("com.samsung.android.calendar", context))
|
||||
return Pair("Samsung Calendar", "com.samsung.android.calendar")
|
||||
else
|
||||
return Pair(context.getString(R.string.none_found), "")
|
||||
}
|
||||
|
||||
// Default volumeUpApps are Messengers
|
||||
fun pickDefaultVolumeUpApp(context: Context) : Pair<String, String>{
|
||||
if(isInstalled("com.whatsapp", context))
|
||||
return Pair("WhatsApp", "com.whatsapp")
|
||||
else if(isInstalled("com.facebook.orca", context))
|
||||
return Pair("Facebook Messenger", "com.facebook.orca")
|
||||
else if(isInstalled("com.viber.voip", context))
|
||||
return Pair("Viber", "com.viber.voip")
|
||||
else if(isInstalled("com.skype.raider", context))
|
||||
return Pair("Skype", "com.skype.raider")
|
||||
else if(isInstalled("com.snapchat.android", context))
|
||||
return Pair("Snapchat", "com.snapchat.android")
|
||||
else if(isInstalled("com.instagram.android", context))
|
||||
return Pair("Instagram", "com.instagram.android")
|
||||
else if(isInstalled("com.samsung.android.messaging", context))
|
||||
return Pair("Samsung SMS", "com.samsung.android.messaging")
|
||||
else
|
||||
return Pair(context.getString(R.string.none_found), "")
|
||||
}
|
||||
|
||||
// Default volumeDownApps are Utilities
|
||||
fun pickDefaultVolumeDownApp(context: Context) : Pair<String, String>{
|
||||
if(isInstalled("com.github.android", context))
|
||||
return Pair("GitHub", "com.github.android")
|
||||
else if(isInstalled("com.soundbrenner.pulse", context))
|
||||
return Pair("Soundbrenner Metronome", "com.soundbrenner.pulse")
|
||||
else if(isInstalled("com.sec.android.app.popupcalculator", context))
|
||||
return Pair("Calculator", "com.sec.android.app.popupcalculator")
|
||||
else
|
||||
return Pair(context.getString(R.string.none_found), "")
|
||||
val defaultAppsMap = parseStringMap(arrayResource, context)
|
||||
for (item in defaultAppsMap!!) if (isInstalled(item.key, context)) return Pair(item.value, item.key)
|
||||
return Pair(context.getString(R.string.none_found), "")
|
||||
}
|
||||
|
|
|
@ -1,6 +1,56 @@
|
|||
<resources>
|
||||
<!-- General -->
|
||||
<string name="app_name">Launcher</string>
|
||||
<string name="preference_file_key">V3RYR4ND0MK3YCR4P</string>
|
||||
|
||||
<!-- Errors, Exceptions (Alerts, Toasts ...) -->
|
||||
<string name="none_found">None found</string>
|
||||
|
||||
<string name="alert_cant_open_title">Can\'t open app</string>
|
||||
<string name="alert_cant_open_message">Want to change its settings (\'add it to the apps screen\')?</string>
|
||||
<string name="toast_cant_open_message">Open settings to choose an app for this action</string>
|
||||
|
||||
<!-- Default Apps for different actions (button-press, swipes ...) -->
|
||||
<string-array name="default_up">
|
||||
<item>org.mozilla.firefox|Firefox</item>
|
||||
<item>com.sec.android.app.sbrowser|Samsung Internet</item>
|
||||
<item>com.android.chrome|Chrome</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="default_down">
|
||||
<item>com.samsung.android.app.galaxyfinder|GalaxyFinder</item>
|
||||
<item>com.prometheusinteractive.voice_launcher|VoiceSearch</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="default_right">
|
||||
<item>de.web.mobile.android.mail|WebMail</item>
|
||||
<item>com.samsung.android.email.provider|Samsung Mail</item>
|
||||
<item>com.google.android.gm|Google Mail</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="default_left">
|
||||
<item>com.google.android.calendar|Google Calendar</item>
|
||||
<item>com.samsung.android.calendar|Samsung Calendar</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="default_volume_up">
|
||||
<item>com.whatsapp|WhatsApp</item>
|
||||
<item>com.facebook.orca|Facebook Messenger</item>
|
||||
<item>com.viber.voip|Viber</item>
|
||||
<item>com.skype.raider|Skype</item>
|
||||
<item>com.snapchat.android|Snapchat</item>
|
||||
<item>com.instagram.android|Instagram</item>
|
||||
<item>com.samsung.android.messaging|Samsung SMS</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="default_volume_down">
|
||||
<item>com.github.android|GitHub</item>
|
||||
<item>com.soundbrenner.pulse|Soundbrenner Metronome</item>
|
||||
<item>com.sec.android.app.popupcalculator|Calculator</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="default_clock">
|
||||
<item>com.sec.android.app.clockpackage|Android Clock</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
|
|
Loading…
Add table
Reference in a new issue