Compare commits
27 Commits
1.2a
...
e6b2dfe37a
Author | SHA1 | Date | |
---|---|---|---|
e6b2dfe37a | |||
f73f9b5acf | |||
ba2d0ac024 | |||
f33b4672b0 | |||
b6b69587fa | |||
06a006c0a2 | |||
8ae38f4250 | |||
3e1252cc0a | |||
e4357a66e0 | |||
21f2c0d69f | |||
340789989c | |||
2428f4e50b | |||
f4c9eddd22 | |||
6a5e971619 | |||
5829f18908 | |||
426d94ba81 | |||
a58d208d49 | |||
069edaf6a2 | |||
d0aa2fbeb9 | |||
17c75f27bc | |||
1738664f83 | |||
a5b55fe214 | |||
0cd90413d1 | |||
653ee1ccc1
|
|||
9b6a69e227 | |||
e40305b680
|
|||
668e9d653f
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -32,7 +32,7 @@ jobs:
|
|||||||
gpg -d --passphrase "${{ secrets.RELEASE_KEYSTORE_PASSWORD }}" --batch keystore.asc > app/keystore.properties
|
gpg -d --passphrase "${{ secrets.RELEASE_KEYSTORE_PASSWORD }}" --batch keystore.asc > app/keystore.properties
|
||||||
gpg -d --passphrase "${{ secrets.RELEASE_KEYSTORE_PASSWORD }}" --batch key.asc > app/key.jks
|
gpg -d --passphrase "${{ secrets.RELEASE_KEYSTORE_PASSWORD }}" --batch key.asc > app/key.jks
|
||||||
|
|
||||||
- uses: gradle/wrapper-validation-action@v2
|
- uses: gradle/wrapper-validation-action@v3
|
||||||
|
|
||||||
- name: create and checkout branch
|
- name: create and checkout branch
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
|
@ -47,7 +47,8 @@
|
|||||||
|
|
||||||
## ⚙️ Permissions
|
## ⚙️ Permissions
|
||||||
|
|
||||||
- `CAMERA`: necessary for the scanning of barcodes
|
- `CAMERA`: necessary for importing barcodes from camera
|
||||||
|
- `READ_MEDIA_VISUAL_USER_SELECTED`: necessary for the importing barcode from images
|
||||||
|
|
||||||
## 📝 Contribute
|
## 📝 Contribute
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'com.android.application'
|
id 'com.android.application'
|
||||||
id 'org.jetbrains.kotlin.android'
|
id 'org.jetbrains.kotlin.android'
|
||||||
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.23'
|
id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -34,6 +34,7 @@ android {
|
|||||||
buildTypes {
|
buildTypes {
|
||||||
debug {
|
debug {
|
||||||
debuggable true
|
debuggable true
|
||||||
|
signingConfig = signingConfigs.getByName("release")
|
||||||
}
|
}
|
||||||
release {
|
release {
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
@ -73,11 +74,11 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.4'
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.4'
|
||||||
|
|
||||||
implementation 'androidx.camera:camera-lifecycle:1.3.2'
|
implementation 'androidx.camera:camera-lifecycle:1.3.3'
|
||||||
implementation 'androidx.camera:camera-view:1.3.2'
|
implementation 'androidx.camera:camera-view:1.3.3'
|
||||||
runtimeOnly 'androidx.camera:camera-camera2:1.3.2'
|
runtimeOnly 'androidx.camera:camera-camera2:1.3.3'
|
||||||
|
|
||||||
implementation 'com.google.code.gson:gson:2.10.1'
|
implementation 'com.google.code.gson:gson:2.11.0'
|
||||||
implementation 'com.google.android.material:material:1.11.0'
|
implementation 'com.google.android.material:material:1.12.0'
|
||||||
implementation 'com.google.zxing:core:3.5.3'
|
implementation 'com.google.zxing:core:3.5.3'
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:versionCode="6"
|
android:versionCode="7"
|
||||||
android:versionName="1.2a">
|
android:versionName="1.2b">
|
||||||
|
|
||||||
<uses-feature android:name="android.hardware.camera" />
|
<uses-feature android:name="android.hardware.camera" />
|
||||||
|
|
||||||
|
@ -151,6 +151,11 @@ class CreateEntry : Fragment() {
|
|||||||
kpEntry.second
|
kpEntry.second
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
if (!binding.checkboxProtected.isChecked) {
|
||||||
|
val r = KeepassWrapper.entryExtract(kpEntry.first)
|
||||||
|
CacheManager.addFidelity(r)
|
||||||
|
}
|
||||||
|
activity?.supportFragmentManager?.popBackStack()
|
||||||
} catch (e: ActivityNotFoundException) {
|
} catch (e: ActivityNotFoundException) {
|
||||||
ErrorToaster.noKP2AFound(context)
|
ErrorToaster.noKP2AFound(context)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
@ -68,7 +68,7 @@ class Scanner : Fragment() {
|
|||||||
this.fmt = format
|
this.fmt = format
|
||||||
}
|
}
|
||||||
val isDone = this.code.isNotEmpty() && this.fmt.isNotEmpty()
|
val isDone = this.code.isNotEmpty() && this.fmt.isNotEmpty()
|
||||||
requireActivity().runOnUiThread {
|
activity?.runOnUiThread {
|
||||||
binding.btnScanDone.isEnabled = isDone
|
binding.btnScanDone.isEnabled = isDone
|
||||||
binding.ScanActive.isEnabled = !isDone
|
binding.ScanActive.isEnabled = !isDone
|
||||||
}
|
}
|
||||||
|
@ -7,8 +7,8 @@ import org.json.JSONObject
|
|||||||
object Kp2aControl {
|
object Kp2aControl {
|
||||||
|
|
||||||
fun getAddEntryIntent(
|
fun getAddEntryIntent(
|
||||||
fields: HashMap<String?, String?>,
|
fields: HashMap<String, String>,
|
||||||
protectedFields: ArrayList<String?>?
|
protectedFields: ArrayList<String>?
|
||||||
): Intent {
|
): Intent {
|
||||||
val outputData = JSONObject((fields as Map<*, *>)).toString()
|
val outputData = JSONObject((fields as Map<*, *>)).toString()
|
||||||
val startKp2aIntent = Intent(Strings.ACTION_START_WITH_TASK)
|
val startKp2aIntent = Intent(Strings.ACTION_START_WITH_TASK)
|
||||||
|
@ -21,10 +21,10 @@ object KeepassWrapper {
|
|||||||
code: String,
|
code: String,
|
||||||
format: String,
|
format: String,
|
||||||
protectCode: Boolean,
|
protectCode: Boolean,
|
||||||
): Pair<HashMap<String?, String?>, ArrayList<String?>> {
|
): Pair<HashMap<String, String>, ArrayList<String>> {
|
||||||
|
|
||||||
val fields = HashMap<String?, String?>()
|
val fields = HashMap<String, String>()
|
||||||
val protected = ArrayList<String?>()
|
val protected = ArrayList<String>()
|
||||||
fields[KeepassDef.TitleField] = title
|
fields[KeepassDef.TitleField] = title
|
||||||
fields[KeepassDef.UrlField] =
|
fields[KeepassDef.UrlField] =
|
||||||
"androidapp://" + fragment.requireActivity().packageName
|
"androidapp://" + fragment.requireActivity().packageName
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'com.android.application' version '8.3.1' apply false
|
id 'com.android.application' version '8.4.1' apply false
|
||||||
id 'com.android.library' version '8.3.1' apply false
|
id 'com.android.library' version '8.4.1' apply false
|
||||||
id 'org.jetbrains.kotlin.android' version '1.9.23' apply false
|
id 'org.jetbrains.kotlin.android' version '2.0.0' apply false
|
||||||
id 'com.autonomousapps.dependency-analysis' version '1.30.0' apply true
|
id 'com.autonomousapps.dependency-analysis' version '1.32.0' apply true
|
||||||
}
|
}
|
Binary file not shown.
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 19 KiB |
1
metadata/en-US/permission_description.txt
Normal file
1
metadata/en-US/permission_description.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
<ul><li><b>CAMERA:</b> necessary for importing barcodes from camera</li><li><b>READ_MEDIA_VISUAL_USER_SELECTED:</b> necessary for the importing barcode from images</li></ul>
|
Reference in New Issue
Block a user