mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Fix special mode in app background
This commit is contained in:
@@ -249,36 +249,37 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
||||
PasswordActivity.launch(this@FileDatabaseSelectActivity,
|
||||
databaseUri, keyFile,
|
||||
searchInfo)
|
||||
// Remove the search info from intent
|
||||
if (searchInfo != null) {
|
||||
finish()
|
||||
}
|
||||
} catch (e: FileNotFoundException) {
|
||||
fileNoFoundAction(e)
|
||||
}
|
||||
// Remove the search info from intent
|
||||
if (searchInfo != null) {
|
||||
finish()
|
||||
}
|
||||
},
|
||||
{ searchInfo -> // Keyboard Selection Action
|
||||
try {
|
||||
PasswordActivity.launchForKeyboardResult(this@FileDatabaseSelectActivity,
|
||||
databaseUri, keyFile,
|
||||
searchInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
} catch (e: FileNotFoundException) {
|
||||
fileNoFoundAction(e)
|
||||
}
|
||||
finish()
|
||||
},
|
||||
{ searchInfo, assistStructure -> // Autofill Selection Action
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && assistStructure != null) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
try {
|
||||
PasswordActivity.launchForAutofillResult(this@FileDatabaseSelectActivity,
|
||||
databaseUri, keyFile,
|
||||
assistStructure,
|
||||
searchInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
} catch (e: FileNotFoundException) {
|
||||
fileNoFoundAction(e)
|
||||
}
|
||||
} else {
|
||||
finish()
|
||||
onCancelSpecialMode()
|
||||
}
|
||||
},
|
||||
{ searchInfo -> // Registration Action
|
||||
@@ -286,10 +287,10 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
||||
PasswordActivity.launchForRegistration(this@FileDatabaseSelectActivity,
|
||||
databaseUri, keyFile,
|
||||
searchInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
} catch (e: FileNotFoundException) {
|
||||
fileNoFoundAction(e)
|
||||
}
|
||||
finish()
|
||||
})
|
||||
}
|
||||
|
||||
@@ -301,6 +302,9 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
||||
false,
|
||||
searchInfo,
|
||||
readOnly)
|
||||
if (searchInfo != null) {
|
||||
finish()
|
||||
}
|
||||
},
|
||||
{ searchInfo ->
|
||||
GroupActivity.launchForKeyboardSelectionResult(this@FileDatabaseSelectActivity,
|
||||
@@ -308,27 +312,32 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
||||
searchInfo,
|
||||
readOnly)
|
||||
// Do not keep history
|
||||
finish()
|
||||
onLaunchActivitySpecialMode()
|
||||
},
|
||||
{ searchInfo, assistStructure ->
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && assistStructure != null) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
GroupActivity.launchForAutofillResult(this@FileDatabaseSelectActivity,
|
||||
assistStructure,
|
||||
false,
|
||||
searchInfo,
|
||||
readOnly)
|
||||
onLaunchActivitySpecialMode()
|
||||
} else {
|
||||
finish()
|
||||
onCancelSpecialMode()
|
||||
}
|
||||
},
|
||||
{ searchInfo ->
|
||||
GroupActivity.launchForRegistration(this@FileDatabaseSelectActivity,
|
||||
searchInfo)
|
||||
// Do not keep history
|
||||
finish()
|
||||
onLaunchActivitySpecialMode()
|
||||
})
|
||||
}
|
||||
|
||||
override fun onCancelSpecialMode() {
|
||||
super.onCancelSpecialMode()
|
||||
finish()
|
||||
}
|
||||
|
||||
private fun launchPasswordActivityWithPath(databaseUri: Uri) {
|
||||
launchPasswordActivity(databaseUri, null)
|
||||
// Delete flickering for kitkat <=
|
||||
|
||||
@@ -209,41 +209,33 @@ class GroupActivity : LockingActivity(),
|
||||
GroupEditDialogFragment.TAG_CREATE_GROUP)
|
||||
}
|
||||
addNodeButtonView?.setAddEntryClickListener {
|
||||
EntrySelectionHelper.doSpecialAction(intent,
|
||||
{
|
||||
mCurrentGroup?.let { currentGroup ->
|
||||
mCurrentGroup?.let { currentGroup ->
|
||||
EntrySelectionHelper.doSpecialAction(intent,
|
||||
{
|
||||
EntryEditActivity.launch(this@GroupActivity, currentGroup)
|
||||
}
|
||||
},
|
||||
{ searchInfo ->
|
||||
mCurrentGroup?.let { currentGroup ->
|
||||
},
|
||||
{ searchInfo ->
|
||||
EntryEditActivity.launchForKeyboardSelectionResult(this@GroupActivity,
|
||||
currentGroup, searchInfo)
|
||||
}
|
||||
},
|
||||
{ searchInfo, assistStructure ->
|
||||
var finishActivity = true
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
mCurrentGroup?.let { currentGroup ->
|
||||
assistStructure?.let { autofillStructure ->
|
||||
finishActivity = false
|
||||
EntryEditActivity.launchForAutofillResult(this@GroupActivity,
|
||||
autofillStructure,
|
||||
currentGroup, searchInfo)
|
||||
}
|
||||
onLaunchActivitySpecialMode()
|
||||
},
|
||||
{ searchInfo, assistStructure ->
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
EntryEditActivity.launchForAutofillResult(this@GroupActivity,
|
||||
assistStructure,
|
||||
currentGroup, searchInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
} else {
|
||||
onCancelSpecialMode()
|
||||
}
|
||||
}
|
||||
if (finishActivity)
|
||||
finish()
|
||||
},
|
||||
{ searchInfo ->
|
||||
mCurrentGroup?.let { currentGroup ->
|
||||
},
|
||||
{ searchInfo ->
|
||||
EntryEditActivity.launchForRegistration(this@GroupActivity,
|
||||
currentGroup, searchInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
}
|
||||
finish()
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
mDatabase?.let { database ->
|
||||
|
||||
@@ -307,11 +307,13 @@ open class PasswordActivity : SpecialModeActivity() {
|
||||
populateKeyboardAndMoveAppToBackground(this@PasswordActivity,
|
||||
items[0],
|
||||
intent)
|
||||
onValidateSpecialMode()
|
||||
} else {
|
||||
// Select the one we want
|
||||
GroupActivity.launchForKeyboardSelectionResult(this,
|
||||
true,
|
||||
searchInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -320,14 +322,13 @@ open class PasswordActivity : SpecialModeActivity() {
|
||||
false,
|
||||
searchInfo,
|
||||
readOnly)
|
||||
onLaunchActivitySpecialMode()
|
||||
},
|
||||
{
|
||||
// Simply close if database not opened, normally not happened
|
||||
onCancelSpecialMode()
|
||||
}
|
||||
)
|
||||
// Do not keep history
|
||||
finish()
|
||||
},
|
||||
{ searchInfo, assistStructure ->
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
@@ -338,27 +339,23 @@ open class PasswordActivity : SpecialModeActivity() {
|
||||
// Response is build
|
||||
AutofillHelper.buildResponse(this, items)
|
||||
onValidateSpecialMode()
|
||||
finish()
|
||||
},
|
||||
{
|
||||
if (assistStructure != null) {
|
||||
// Here no search info found, disable auto search
|
||||
GroupActivity.launchForAutofillResult(this@PasswordActivity,
|
||||
assistStructure,
|
||||
false,
|
||||
searchInfo,
|
||||
readOnly)
|
||||
} else {
|
||||
onCancelSpecialMode()
|
||||
finish()
|
||||
}
|
||||
// Here no search info found, disable auto search
|
||||
GroupActivity.launchForAutofillResult(this@PasswordActivity,
|
||||
assistStructure,
|
||||
false,
|
||||
searchInfo,
|
||||
readOnly)
|
||||
onLaunchActivitySpecialMode()
|
||||
},
|
||||
{
|
||||
// Simply close if database not opened, normally not happened
|
||||
onCancelSpecialMode()
|
||||
finish()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
onCancelSpecialMode()
|
||||
}
|
||||
},
|
||||
{ registerInfo ->
|
||||
@@ -369,22 +366,32 @@ open class PasswordActivity : SpecialModeActivity() {
|
||||
// No auto search, it's a registration
|
||||
GroupActivity.launchForRegistration(this,
|
||||
registerInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
},
|
||||
{
|
||||
// Here no search info found, disable auto search
|
||||
GroupActivity.launchForRegistration(this@PasswordActivity,
|
||||
registerInfo)
|
||||
onLaunchActivitySpecialMode()
|
||||
},
|
||||
{
|
||||
// Simply close if database not opened, normally not happened
|
||||
onCancelSpecialMode()
|
||||
}
|
||||
)
|
||||
// Do not keep history
|
||||
finish()
|
||||
})
|
||||
}
|
||||
|
||||
override fun onValidateSpecialMode() {
|
||||
super.onValidateSpecialMode()
|
||||
finish()
|
||||
}
|
||||
|
||||
override fun onCancelSpecialMode() {
|
||||
super.onCancelSpecialMode()
|
||||
finish()
|
||||
}
|
||||
|
||||
private val onEditorActionListener = object : TextView.OnEditorActionListener {
|
||||
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
|
||||
if (actionId == IME_ACTION_DONE) {
|
||||
|
||||
@@ -114,7 +114,7 @@ object EntrySelectionHelper {
|
||||
defaultAction: (searchInfo: SearchInfo?) -> Unit,
|
||||
keyboardSelectionAction: (searchInfo: SearchInfo?) -> Unit,
|
||||
autofillSelectionAction: (searchInfo: SearchInfo?,
|
||||
assistStructure: AssistStructure?) -> Unit,
|
||||
assistStructure: AssistStructure) -> Unit,
|
||||
registrationAction: (registerInfo: RegisterInfo?) -> Unit) {
|
||||
|
||||
when (retrieveSpecialModeFromIntent(intent)) {
|
||||
@@ -139,7 +139,11 @@ object EntrySelectionHelper {
|
||||
when (typeMode) {
|
||||
TypeMode.DEFAULT -> defaultAction.invoke(searchInfo)
|
||||
TypeMode.MAGIKEYBOARD -> keyboardSelectionAction.invoke(searchInfo)
|
||||
TypeMode.AUTOFILL -> autofillSelectionAction.invoke(searchInfo, null)
|
||||
else -> {
|
||||
// In this case, error
|
||||
removeModesFromIntent(intent)
|
||||
removeInfoFromIntent(intent)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
defaultAction.invoke(searchInfo)
|
||||
|
||||
@@ -49,6 +49,14 @@ abstract class SpecialModeActivity : StylishActivity() {
|
||||
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
|
||||
}
|
||||
|
||||
fun onLaunchActivitySpecialMode() {
|
||||
if (!isIntentSender()) {
|
||||
EntrySelectionHelper.removeModesFromIntent(intent)
|
||||
EntrySelectionHelper.removeInfoFromIntent(intent)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
open fun onValidateSpecialMode() {
|
||||
if (isIntentSender()) {
|
||||
super.finish()
|
||||
|
||||
Reference in New Issue
Block a user