diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt
index aeafd67b..09e41b9a 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt
@@ -1764,8 +1764,7 @@ class MainActivity : AppCompatActivity() {
if (!Utils.unZip(zipFilePath)) {
Log.w(TAG, "Failed to unzip file '$zipFile'")
Utils.alertView(this, getString(R.string.error),
- String.format(getString(R.string.restore_failed),
- Utils.fileNameOfUri(applicationContext, downloadsInputUri!!)))
+ String.format(getString(R.string.restore_unzip_failed), "baresip", "60.0.0"))
return
}
Utils.deleteFile(File(zipFilePath))
diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt
index e80492b8..7a162630 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt
@@ -765,12 +765,12 @@ object Utils {
try {
ZipOutputStream(BufferedOutputStream(FileOutputStream(zipFilePath))).use { out ->
val data = ByteArray(1024)
- for (file in fileNames) {
- val filePath = BaresipService.filesPath + "/" + file
+ for (fileName in fileNames) {
+ val filePath = BaresipService.filesPath + "/" + fileName
if (File(filePath).exists()) {
FileInputStream(filePath).use { fi ->
BufferedInputStream(fi).use { origin ->
- val entry = ZipEntry(filePath)
+ val entry = ZipEntry(fileName)
out.putNextEntry(entry)
while (true) {
val readBytes = origin.read(data)
@@ -794,15 +794,15 @@ object Utils {
"gzrtp.zid", "cert.pem", "ca_cert", "ca_certs.crt")
val zipFiles = mutableListOf()
try {
- ZipFile(zipFilePath).use { zip ->
+ ZipFile(File(zipFilePath)).use { zip ->
zip.entries().asSequence().forEach { entry ->
- if (!entry.name.contains("/${BaresipService.pName}/")) {
- Log.e(TAG, "Backup file is not from this application")
- return false
- }
- zipFiles.add(entry.name.substringAfter("/files/"))
+ val entryName = if (entry.name.startsWith("/"))
+ entry.name.substringAfterLast("/")
+ else
+ entry.name
+ zipFiles.add(entryName)
zip.getInputStream(entry).use { input ->
- File(entry.name).outputStream().use { output ->
+ File(BaresipService.filesPath + "/" + entryName).outputStream().use { output ->
input.copyTo(output)
}
}
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index dc4b0c76..aa406820 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -548,6 +548,9 @@
annoit oikean salasanan ja että palautustiedosto kuuluu tällä sovellukselle.
Android versioon 9 saakka tarkista myös Asetukset → Sovellukset → baresip → Käyttöluvat →
Tallennustila ja että tiedosto \'%1$s\' on Download-kansiossa.
+ Sovelluksen tietojen palauttaminen epäonnistui. Android
+ versiosta 14 alkaen ei salli tietojen palauttamista, jos ne on tallettu ennen %1$s versioa
+ %2$s.
Et voi käyttää tätä sovellusta ilman Ilmoitukset-lupaa.
Et voi soittaa puheluita tai vastata niihin ilman Mikrofoni-lupaa.
baresip ei voi havaita Bluetooth-yhteyttä ilman
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 308085a5..9318f600 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -523,6 +523,9 @@
also check Apps → baresip → Permissions → Storage and that file \'%1$s\' exists
in Download folder.
+ Failed to restore application data. Android version 14 and
+ above does not allow restoring data that was backed up before %1$s version %2$s.
+
You are not able to use this application without \"Notifications\"
permission.
baresip needs \"Microphone\" permission for voice calls.