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