diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index daa989f1133bcb849fbb7d23d364c0bc38292abe..508c47af8941dbd8a0d8322ed11f6c90b8a210bf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,7 @@
+
-
+
+
@@ -86,7 +90,8 @@
-
+
@@ -100,8 +105,10 @@
+
diff --git a/app/src/main/java/foundation/e/apps/data/DownloadManager.kt b/app/src/main/java/foundation/e/apps/data/DownloadManager.kt
index 37461b80ef85f46aec82168e946618c8d31c443b..1d54cdf9d85cc05ee26ef7319b4ef406f4968e59 100644
--- a/app/src/main/java/foundation/e/apps/data/DownloadManager.kt
+++ b/app/src/main/java/foundation/e/apps/data/DownloadManager.kt
@@ -20,6 +20,7 @@ package foundation.e.apps.data
import android.app.DownloadManager
import android.content.Context
import android.net.Uri
+import android.os.Environment
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.OpenForTesting
import foundation.e.apps.R
@@ -47,9 +48,8 @@ class DownloadManager @Inject constructor(
) {
private val downloadsMaps = HashMap()
- companion object {
- const val EXTERNAL_STORAGE_TEMP_CACHE_DIR = "/sdcard/Download/AppLounge/SplitInstallApks"
- }
+ private val SDCARD_PATH = Environment.getExternalStorageDirectory().absolutePath
+ val EXTERNAL_STORAGE_TEMP_CACHE_DIR = "$SDCARD_PATH/Download/AppLounge/SplitInstallApks"
fun downloadFileInCache(
url: String,
diff --git a/app/src/main/java/foundation/e/apps/data/JobResult.kt b/app/src/main/java/foundation/e/apps/data/JobResult.kt
deleted file mode 100644
index b085c503133fde7e2cae03101e5a35ad43bfc38d..0000000000000000000000000000000000000000
--- a/app/src/main/java/foundation/e/apps/data/JobResult.kt
+++ /dev/null
@@ -1,78 +0,0 @@
-package foundation.e.apps.data
-
-import foundation.e.apps.data.enums.ResultStatus
-
-/**
- * Currently defunct, not being used anywhere.
- * Prototype to merge API request and also get rid of Pair, Triple for timeout related cases.
- */
-open class JobResult private constructor(val status: ResultStatus) {
-
- /*
- * Classes for returning multiple data from a function along with a status
- * in the form of ResultStatus.
- * Use the static overloaded create methods (in companion object) to for easy creation.
- *
- * If needed to just pass a single data element with status for API requests,
- * see the static methods success(), error(), loading() (in companion object).
- */
- class of1 (val data1: A, status: ResultStatus) : JobResult(status)
- class of2 (val data1: A, val data2: B, status: ResultStatus) : JobResult(status)
- class of3 (val data1: A, val data2: B, val data3: C, status: ResultStatus) : JobResult(status)
-
- var message = ""
-
- /*
- * This is the primary data, mainly for API requests which might send null data.
- * Other data (type B, C ...) are secondary/optional data.
- *
- * For non-null return type, directly use of1, of2, of3 ... classes
- * and directly access data1, data2, data3 ...
- */
- val data: T? get() = when (this) {
- is of1 -> this.data1
- is of2 -> this.data1
- is of3 -> this.data1
- else -> null
- }
-
- fun isSuccess(): Boolean {
- return status == ResultStatus.OK
- }
-
- companion object {
- fun create(data1: A, status: ResultStatus, message: String? = null): of1 {
- return of1(data1, status).apply {
- message?.let { this.message = message }
- }
- }
- fun create(data1: A, data2: B, status: ResultStatus, message: String? = null): of2 {
- return of2(data1, data2, status).apply {
- message?.let { this.message = message }
- }
- }
- fun create(data1: A, data2: B, data3: C, status: ResultStatus, message: String? = null): of3 {
- return of3(data1, data2, data3, status).apply {
- message?.let { this.message = message }
- }
- }
-
- /*
- * Methods for API
- */
- fun success(data: T): JobResult {
- return of1(data, ResultStatus.OK)
- }
- fun error(message: String, data: T? = null): JobResult {
- val result = if (data == null) JobResult(ResultStatus.UNKNOWN)
- else of1(data, ResultStatus.UNKNOWN)
- return result.apply {
- this.message = message
- }
- }
- /*fun loading(data: T?): JobResult {
- return if (data == null) JobResult(ResultStatus.LOADING)
- else JobResult.of1(data, ResultStatus.LOADING)
- }*/
- }
-}
diff --git a/app/src/main/java/foundation/e/apps/data/cleanapk/RetrofitModule.kt b/app/src/main/java/foundation/e/apps/data/cleanapk/RetrofitModule.kt
index 7b46568dcb00b158e79c9b2c1be594f8435e0621..43a505137c32b44c1c88c655cf7a8c55faf04e19 100644
--- a/app/src/main/java/foundation/e/apps/data/cleanapk/RetrofitModule.kt
+++ b/app/src/main/java/foundation/e/apps/data/cleanapk/RetrofitModule.kt
@@ -19,7 +19,6 @@
package foundation.e.apps.data.cleanapk
import android.os.Build
-import android.util.Log
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import com.google.gson.Gson
@@ -46,6 +45,7 @@ import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.converter.jackson.JacksonConverterFactory
import retrofit2.converter.moshi.MoshiConverterFactory
+import timber.log.Timber
import java.net.ConnectException
import java.util.Locale
import javax.inject.Named
@@ -193,7 +193,7 @@ object RetrofitModule {
e: Exception,
chain: Interceptor.Chain
): Response {
- Log.e("Retrofit", "buildErrorResponse: ${e.localizedMessage}")
+ Timber.e("buildErrorResponse: ${e.localizedMessage}")
return Response.Builder()
.code(999)
.message(e.localizedMessage ?: "Unknown error")
diff --git a/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt b/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt
index 9c99665ea425110f00e31fa76caf5ddb86bfe3af..180e089389a0eb1f9f76a3125af8d87abc5179f4 100644
--- a/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt
+++ b/app/src/main/java/foundation/e/apps/install/pkg/InstallerService.kt
@@ -21,9 +21,7 @@ package foundation.e.apps.install.pkg
import android.app.Service
import android.content.Intent
import android.content.pm.PackageInstaller
-import android.os.Build
import android.os.IBinder
-import androidx.annotation.RequiresApi
import dagger.hilt.android.AndroidEntryPoint
import foundation.e.apps.data.enums.Status
import foundation.e.apps.data.faultyApps.FaultyAppRepository
@@ -55,7 +53,6 @@ class InstallerService : Service() {
const val INSTALL_FAILED_UPDATE_INCOMPATIBLE = "INSTALL_FAILED_UPDATE_INCOMPATIBLE"
}
- @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -69)
var packageName = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME)
diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt b/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt
index e03ec3c7d714eea0a7503a9aba017d551888c1f3..1d1f422581f19840594c56c2927f5920368f9524 100644
--- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt
+++ b/app/src/main/java/foundation/e/apps/install/updates/UpdatesNotifier.kt
@@ -17,13 +17,16 @@
package foundation.e.apps.install.updates
+import android.Manifest
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
+import android.content.pm.PackageManager
import android.os.Build
+import androidx.core.app.ActivityCompat
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import foundation.e.apps.R
@@ -100,7 +103,7 @@ object UpdatesNotifier {
flags = Intent.FLAG_ACTIVITY_CLEAR_TASK
putExtra(UPDATES_NOTIFICATION_CLICK_EXTRA, true)
}
- return PendingIntent.getActivity(context, 0, intent, 0)
+ return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
}
private fun createNotificationChannel(context: Context) {
@@ -126,6 +129,11 @@ object UpdatesNotifier {
) {
with(NotificationManagerCompat.from(context)) {
createNotificationChannel(context)
+ if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS)
+ != PackageManager.PERMISSION_GRANTED
+ ) {
+ return
+ }
notify(
UPDATES_NOTIFICATION_ID,
getNotification(
@@ -146,6 +154,11 @@ object UpdatesNotifier {
) {
with(NotificationManagerCompat.from(context)) {
createNotificationChannel(context)
+ if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS)
+ != PackageManager.PERMISSION_GRANTED
+ ) {
+ return
+ }
notify(
UPDATES_NOTIFICATION_ID,
getNotification(
diff --git a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorkManager.kt b/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorkManager.kt
index 895ebf020a91ede3810c7e84d5a814f52275af0e..fa41365edc1f4379d44ce68aa7fb68a0db1c4803 100644
--- a/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorkManager.kt
+++ b/app/src/main/java/foundation/e/apps/install/updates/UpdatesWorkManager.kt
@@ -18,7 +18,6 @@
package foundation.e.apps.install.updates
import android.content.Context
-import android.util.Log
import androidx.work.Constraints
import androidx.work.Data
import androidx.work.ExistingPeriodicWorkPolicy
@@ -27,6 +26,7 @@ import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequest
import androidx.work.PeriodicWorkRequest
import androidx.work.WorkManager
+import timber.log.Timber
import java.util.concurrent.TimeUnit
object UpdatesWorkManager {
@@ -72,11 +72,11 @@ object UpdatesWorkManager {
interval: Long,
existingPeriodicWorkPolicy: ExistingPeriodicWorkPolicy
) {
- Log.i(TAG, "UpdatesWorker interval: $interval hours")
+ Timber.i("UpdatesWorker interval: $interval hours")
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
UPDATES_WORK_NAME,
existingPeriodicWorkPolicy, buildPeriodicWorkRequest(interval)
)
- Log.i(TAG, "UpdatesWorker started")
+ Timber.i("UpdatesWorker started")
}
}
diff --git a/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt
index 07ccbacc0f45444a6ccd6d81427bf02be8971d8a..9b025d371477a258d3fbcbf1534d7535dee6c5ab 100644
--- a/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt
+++ b/app/src/main/java/foundation/e/apps/ui/MainActivityViewModel.kt
@@ -389,7 +389,8 @@ class MainActivityViewModel @Inject constructor(
}
}
- private fun ProducerScope.sendInternetStatus(connectivityManager: ConnectivityManager) {
+ // protected to avoid SyntheticAccessor
+ protected fun ProducerScope.sendInternetStatus(connectivityManager: ConnectivityManager) {
val capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
diff --git a/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt b/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt
index c7c565403d2c6fcf25d34a5d0739804b49813f57..b6d4ae0cee7c4aab77303eefc7ca1318f86f6065 100644
--- a/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt
+++ b/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt
@@ -742,7 +742,7 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) {
val progressPercentage =
((progressResult.second / progressResult.first.toDouble()) * 100f).toInt()
binding.downloadInclude.appInstallPB.progress = progressPercentage
- binding.downloadInclude.percentage.text = "$progressPercentage%"
+ binding.downloadInclude.percentage.text = String.format("%d%%", progressPercentage)
binding.downloadInclude.downloadedSize.text = downloadedSize
}
diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt
index 3d607d1374b9166c43c6becf194d99e5ea076c1c..0b0eb3ef8bd74be53e7207393ecf6728cc2a684d 100644
--- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt
+++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt
@@ -56,7 +56,8 @@ class ApplicationListFragment :
TimeoutFragment(R.layout.fragment_application_list),
FusedAPIInterface {
- private val args: ApplicationListFragmentArgs by navArgs()
+ // protected to avoid SyntheticAccessor
+ protected val args: ApplicationListFragmentArgs by navArgs()
@Inject
lateinit var pkgManagerModule: PkgManagerModule
@@ -64,7 +65,8 @@ class ApplicationListFragment :
@Inject
lateinit var pwaManagerModule: PWAManagerModule
- private val viewModel: ApplicationListViewModel by viewModels()
+ // protected to avoid SyntheticAccessor
+ protected val viewModel: ApplicationListViewModel by viewModels()
private val privacyInfoViewModel: PrivacyInfoViewModel by viewModels()
private val appInfoFetchViewModel: AppInfoFetchViewModel by viewModels()
override val mainActivityViewModel: MainActivityViewModel by activityViewModels()
@@ -325,7 +327,7 @@ class ApplicationListFragment :
)
viewHolder?.let {
(viewHolder as ApplicationListRVAdapter.ViewHolder).binding.installButton.text =
- "$progress%"
+ String.format("%d%%", progress)
}
}
}
diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt
index a552ad664e29c993089a64d3df70ef71a85f0d00..12bd1aa3c5ad60feba81d0b54de7adb8431a5e50 100644
--- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt
+++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt
@@ -17,7 +17,6 @@
package foundation.e.apps.ui.applicationlist
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -173,7 +172,7 @@ class ApplicationListRVAdapter(
placeholder(shimmerDrawable)
}
}
- else -> Log.wtf(TAG, "${searchApp.package_name} is from an unknown origin")
+ else -> Timber.wtf("${searchApp.package_name} is from an unknown origin")
}
}
diff --git a/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt b/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt
index e77176ba2d62ca9c7db617a3bc8d459a9ee8c5f8..8ee45a413241f1ee2dd16e7cfa4cf54ebe7d49c1 100644
--- a/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt
+++ b/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt
@@ -252,7 +252,7 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface
)
childViewHolder?.let {
(childViewHolder as HomeChildRVAdapter.ViewHolder).binding.installButton.text =
- "$progress%"
+ String.format("%d%%", progress)
}
}
}
diff --git a/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt b/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt
index f9688f226cd209f96b17fa9b4e5c09bbd4c6545e..6582eb4b7c2e36ce2a59c23abb4f4a30365af6f4 100644
--- a/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt
+++ b/app/src/main/java/foundation/e/apps/ui/purchase/AppPurchaseFragment.kt
@@ -1,5 +1,6 @@
package foundation.e.apps.ui.purchase
+import android.annotation.SuppressLint
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
@@ -48,6 +49,7 @@ class AppPurchaseFragment : Fragment() {
setupWebView(url)
}
+ @SuppressLint("SetJavaScriptEnabled")
private fun setupWebView(url: String) {
val cookieManager = CookieManager.getInstance()
cookieManager.removeAllCookies(null)
@@ -73,7 +75,7 @@ class AppPurchaseFragment : Fragment() {
allowContentAccess = true
databaseEnabled = true
domStorageEnabled = true
- javaScriptEnabled = true
+ javaScriptEnabled = true // Google Play page is tested to not work otherwise
cacheMode = WebSettings.LOAD_DEFAULT
}
loadUrl(url)
diff --git a/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt b/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt
index f97ec131c017f16ee46d8d7178f3946cf35386ff..397853ee6adbc7e235694d756eaf7b127c9f8984 100644
--- a/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt
+++ b/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt
@@ -318,7 +318,7 @@ class SearchFragment :
)
viewHolder?.let {
(viewHolder as ApplicationListRVAdapter.ViewHolder).binding.installButton.text =
- "$progress%"
+ String.format("%d%%", progress)
}
}
}
diff --git a/app/src/main/java/foundation/e/apps/ui/settings/RadioButtonPreference.kt b/app/src/main/java/foundation/e/apps/ui/settings/RadioButtonPreference.kt
deleted file mode 100644
index 0dcc41d4287936f5895b37153e6124aaf184d6bd..0000000000000000000000000000000000000000
--- a/app/src/main/java/foundation/e/apps/ui/settings/RadioButtonPreference.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Apps Quickly and easily install Android apps onto your device!
- * Copyright (C) 2021 E FOUNDATION
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package foundation.e.apps.ui.settings
-
-import android.content.Context
-import android.util.AttributeSet
-import androidx.preference.CheckBoxPreference
-import foundation.e.apps.R
-
-class RadioButtonPreference : CheckBoxPreference {
-
- constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(
- context,
- attrs,
- defStyle
- ) {
- setView()
- }
-
- constructor(context: Context, attrs: AttributeSet? = null) : super(context, attrs) {
- setView()
- }
-
- private fun setView() {
- widgetLayoutResource = R.layout.preference_widget_radiobutton
- }
-
- override fun onClick() {
- if (this.isChecked)
- return
-
- super.onClick()
- }
-}
diff --git a/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt
index 5aeda3fb17fd04b65586494469d170850598fa48..dd927f2d9ad4eeab0050e7b8ca38cdf251616b12 100644
--- a/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt
+++ b/app/src/main/java/foundation/e/apps/ui/setup/signin/LocaleChangedBroadcastReceiver.kt
@@ -48,6 +48,10 @@ class LocaleChangedBroadcastReceiver : BroadcastReceiver() {
private val TAG = LocaleChangedBroadcastReceiver::class.java.simpleName
override fun onReceive(context: Context, intent: Intent) {
+ if (intent.action != Intent.ACTION_LOCALE_CHANGED) {
+ // security measure so that only the android system can call the receiver
+ return
+ }
GlobalScope.launch {
try {
val authDataJson = dataStoreModule.getAuthDataSync()
diff --git a/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt b/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt
index e6602264287d2e03fc37b2c1d80ca511f02ec30f..8dc3081b306bee1790d961c2a2ed725765f8cf13 100644
--- a/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt
+++ b/app/src/main/java/foundation/e/apps/ui/setup/signin/google/GoogleSignInFragment.kt
@@ -41,7 +41,8 @@ class GoogleSignInFragment : Fragment(R.layout.fragment_google_signin) {
private var _binding: FragmentGoogleSigninBinding? = null
private val binding get() = _binding!!
- private val viewModel: LoginViewModel by lazy {
+ // protected to avoid SyntheticAccessor
+ protected val viewModel: LoginViewModel by lazy {
ViewModelProvider(requireActivity())[LoginViewModel::class.java]
}
diff --git a/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt b/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt
index 4baf3adbf0b29ca84019abecae076428d41cb1f6..017dbfd4a4407bc3d5f986bf0a341372888e0a03 100644
--- a/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt
+++ b/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt
@@ -361,7 +361,7 @@ class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInte
)
viewHolder?.let {
(viewHolder as ApplicationListRVAdapter.ViewHolder).binding.installButton.text =
- "$progress%"
+ String.format("%d%%", progress)
}
}
}
diff --git a/app/src/main/res/drawable-hdpi/app_lounge_notification_icon.png b/app/src/main/res/drawable-hdpi/app_lounge_notification_icon.png
deleted file mode 100644
index c25efd652b98caad1531cbb839bb662e1d5184f3..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-hdpi/app_lounge_notification_icon.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/app_lounge_notification_icon.webp b/app/src/main/res/drawable-hdpi/app_lounge_notification_icon.webp
new file mode 100644
index 0000000000000000000000000000000000000000..f00559347d821824b459679338d8306897f4aacb
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/app_lounge_notification_icon.webp differ
diff --git a/app/src/main/res/drawable-mdpi/app_lounge_notification_icon.png b/app/src/main/res/drawable-mdpi/app_lounge_notification_icon.png
deleted file mode 100644
index 00fb90e9f8e3d9c864fcaef766083de89d111a52..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-mdpi/app_lounge_notification_icon.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/app_lounge_notification_icon.webp b/app/src/main/res/drawable-mdpi/app_lounge_notification_icon.webp
new file mode 100644
index 0000000000000000000000000000000000000000..463b6c6b889bab93055ee63c01c458fa26754620
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/app_lounge_notification_icon.webp differ
diff --git a/app/src/main/res/drawable-nodpi/ic_app_updated_on.xml b/app/src/main/res/drawable-nodpi/ic_app_updated_on.xml
deleted file mode 100644
index 5a1af8b80a1780071b33c94d3a938f2a98ac0f49..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable-nodpi/ic_app_updated_on.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/drawable-xhdpi/app_lounge_notification_icon.png b/app/src/main/res/drawable-xhdpi/app_lounge_notification_icon.png
deleted file mode 100644
index 060ad9d64a38c7044cc807f722460c1639c50c5f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xhdpi/app_lounge_notification_icon.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/app_lounge_notification_icon.webp b/app/src/main/res/drawable-xhdpi/app_lounge_notification_icon.webp
new file mode 100644
index 0000000000000000000000000000000000000000..186ced7f3be8d849dcb44ed031d5ea7dc388b374
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/app_lounge_notification_icon.webp differ
diff --git a/app/src/main/res/drawable-xxhdpi/app_lounge_notification_icon.png b/app/src/main/res/drawable-xxhdpi/app_lounge_notification_icon.png
deleted file mode 100644
index 8fbe5ca4b6e1cf57e5b350f3b63e4f14a228d72e..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxhdpi/app_lounge_notification_icon.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/app_lounge_notification_icon.webp b/app/src/main/res/drawable-xxhdpi/app_lounge_notification_icon.webp
new file mode 100644
index 0000000000000000000000000000000000000000..6ec33fbb9ca4c5280379e491acfc42150fe81d19
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/app_lounge_notification_icon.webp differ
diff --git a/app/src/main/res/drawable-xxxhdpi/app_lounge_notification_icon.png b/app/src/main/res/drawable-xxxhdpi/app_lounge_notification_icon.png
deleted file mode 100644
index 9a58e72b5a02a1f635e11acba5dc6e2942eb9610..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-xxxhdpi/app_lounge_notification_icon.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/app_lounge_notification_icon.webp b/app/src/main/res/drawable-xxxhdpi/app_lounge_notification_icon.webp
new file mode 100644
index 0000000000000000000000000000000000000000..b4aabf50016dedd07ccbe47408853203ce03befa
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/app_lounge_notification_icon.webp differ
diff --git a/app/src/main/res/drawable/ic_app_updated_on.xml b/app/src/main/res/drawable/ic_app_updated_on.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52dab93abaf723b2cda821e679ba04bfb9f04766
--- /dev/null
+++ b/app/src/main/res/drawable/ic_app_updated_on.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_cat_family.xml b/app/src/main/res/drawable/ic_cat_family.xml
index 56499beb09efbc5b04846889fd957cd72f2da8ae..7f46134ac406bea1ff6fb26f25c036abb1676a0f 100644
--- a/app/src/main/res/drawable/ic_cat_family.xml
+++ b/app/src/main/res/drawable/ic_cat_family.xml
@@ -17,11 +17,11 @@
-->
+ android:width="24dp"
+ android:height="32dp"
+ android:viewportWidth="32.0"
+ android:viewportHeight="32.0">
+ android:pathData="M16,10c3.68,0 6.67,-2.24 6.67,-5S19.68,0 16,0s-6.67,2.24 -6.67,5 2.98,5 6.67,5zM27.3,13.51l3.57,-1.88c1.21,-0.63 1.5,-1.88 0.65,-2.79 -0.84,-0.91 -2.51,-1.13 -3.72,-0.49l-3.57,1.88c-4.91,2.58 -11.57,2.58 -16.48,0l-3.57,-1.88c-1.21,-0.64 -2.88,-0.41 -3.72,0.49 -0.85,0.91 -0.56,2.15 0.65,2.79l3.57,1.88c1.45,0.76 3.02,1.34 4.63,1.78v2.51c-0.78,0.35 -1.33,0.96 -1.33,1.69v1.17c0,0.39 0.19,0.74 0.47,1.06L5.25,24.75c-0.76,0.71 -0.78,1.72 -0.05,2.45l4,4c0.53,0.52 1.33,0.8 2.13,0.8 0.56,0 1.12,-0.13 1.6,-0.4 1.18,-0.66 1.42,-1.92 0.53,-2.8l-2.76,-2.76 1.52,-1.43c0.94,0.56 2.1,0.89 3.32,0.89h0.92c1.22,0 2.38,-0.32 3.32,-0.89l1.52,1.43 -2.76,2.76c-0.88,0.88 -0.65,2.14 0.53,2.8 0.48,0.27 1.04,0.4 1.6,0.4 0.82,0 1.61,-0.28 2.13,-0.8l4,-4c0.73,-0.73 0.71,-1.74 -0.05,-2.45l-3.22,-3.02c0.28,-0.32 0.47,-0.68 0.47,-1.06L24.02,19.5c0,-0.73 -0.55,-1.34 -1.33,-1.69v-2.51c1.61,-0.44 3.17,-1.02 4.62,-1.78zM21.33,20.67l-2.99,2.24c-0.5,0.38 -1.18,0.59 -1.88,0.59h-0.92c-0.71,0 -1.38,-0.21 -1.88,-0.59L10.67,20.67L10.67,19.5h10.67v1.17z"/>
diff --git a/app/src/main/res/drawable/ic_cat_news.xml b/app/src/main/res/drawable/ic_cat_news.xml
index 0b9c85f876d2e8958be4a187707268322a65b1dd..b2358ba80c3996d8c1900f5f3ca1023c2b19bc92 100644
--- a/app/src/main/res/drawable/ic_cat_news.xml
+++ b/app/src/main/res/drawable/ic_cat_news.xml
@@ -17,11 +17,11 @@
-->
+ android:width="32dp"
+ android:height="28dp"
+ android:viewportWidth="32.0"
+ android:viewportHeight="32.0">
+ android:pathData="M30.67,4L6.22,4c-1.16,0 -2.15,0.84 -2.51,2L1.33,6c-0.74,0 -1.33,0.67 -1.33,1.5v17c0,1.93 1.39,3.5 3.11,3.5h27.56c0.74,0 1.33,-0.67 1.33,-1.5L32,5.5c0,-0.83 -0.6,-1.5 -1.33,-1.5zM2.67,24.5L2.67,9h0.89v15.5c0,0.28 -0.2,0.5 -0.44,0.5s-0.44,-0.22 -0.44,-0.5zM29.33,25L6.19,25c0.02,-0.16 0.03,-0.33 0.03,-0.5L6.22,7h23.11v18zM9.56,17.5h7.56c0.37,0 0.67,-0.34 0.67,-0.75v-6c0,-0.41 -0.3,-0.75 -0.67,-0.75L9.56,10c-0.37,0 -0.67,0.34 -0.67,0.75v6c0,0.41 0.3,0.75 0.67,0.75zM11.11,12.5h4.44v2.5h-4.44v-2.5zM8.89,21.25v-1.5c0,-0.41 0.3,-0.75 0.67,-0.75h7.56c0.37,0 0.67,0.34 0.67,0.75v1.5c0,0.41 -0.3,0.75 -0.67,0.75L9.56,22c-0.37,0 -0.67,-0.34 -0.67,-0.75zM19.56,21.25v-1.5c0,-0.41 0.3,-0.75 0.67,-0.75h5.78c0.37,0 0.67,0.34 0.67,0.75v1.5c0,0.41 -0.3,0.75 -0.67,0.75L20.22,22c-0.37,0 -0.67,-0.34 -0.67,-0.75zM19.56,12.25v-1.5c0,-0.41 0.3,-0.75 0.67,-0.75h5.78c0.37,0 0.67,0.34 0.67,0.75v1.5c0,0.41 -0.3,0.75 -0.67,0.75L20.22,13c-0.37,0 -0.67,-0.34 -0.67,-0.75zM19.56,16.75v-1.5c0,-0.41 0.3,-0.75 0.67,-0.75h5.78c0.37,0 0.67,0.34 0.67,0.75v1.5c0,0.41 -0.3,0.75 -0.67,0.75L20.22,17.5c-0.37,0 -0.67,-0.34 -0.67,-0.75z"/>
diff --git a/app/src/main/res/drawable/ic_cat_travel.xml b/app/src/main/res/drawable/ic_cat_travel.xml
index d6537df430fafaf65b94a50203a9b9a330fcce1e..6e557fd4c87d82d47ccfbc68fdc6d3dde389d9a4 100644
--- a/app/src/main/res/drawable/ic_cat_travel.xml
+++ b/app/src/main/res/drawable/ic_cat_travel.xml
@@ -17,11 +17,11 @@
-->
+ android:width="28dp"
+ android:height="32dp"
+ android:viewportWidth="32.0"
+ android:viewportHeight="32.0">
+ android:pathData="M20,20.5c0,-1.38 1.28,-2.5 2.86,-2.5s2.86,1.12 2.86,2.5 -1.28,2.5 -2.86,2.5 -2.86,-1.12 -2.86,-2.5zM9.14,23c1.58,0 2.86,-1.12 2.86,-2.5s-1.28,-2.5 -2.86,-2.5 -2.86,1.12 -2.86,2.5 1.28,2.5 2.86,2.5zM32,6.86v14.29c0,3.07 -3.12,5.66 -7.08,6.54l4.2,3.67c0.27,0.24 0.08,0.64 -0.3,0.64h-3.46a0.86,0.75 0,0 1,-0.61 -0.22L20.43,28L11.57,28l-4.32,3.78A0.86,0.75 0,0 1,6.64 32L3.18,32c-0.38,0 -0.57,-0.4 -0.3,-0.64l4.2,-3.67C3.13,26.81 0,24.23 0,21.14L0,6.86C0,2.87 5.07,0 9.88,0h12.24C26.99,0 32,2.87 32,6.86zM3.63,6h24.75c-0.73,-1.63 -3.43,-3 -6.26,-3L9.88,3c-2.78,0 -5.5,1.35 -6.25,3zM3.43,14h10.86v-5L3.43,9v5zM28.57,17L3.43,17v4.14C3.43,23.41 7.14,25 9.88,25h12.24C24.82,25 28.57,23.43 28.57,21.14L28.57,17zM28.57,9L17.71,9v5h10.86v-5z"/>
diff --git a/app/src/main/res/layout/application_list_item.xml b/app/src/main/res/layout/application_list_item.xml
index bf6f7ef8c8670d687ed374648ca85d1bfcfe6518..9223c9c56c9f6448aa7cb12ccd9125362bafba12 100644
--- a/app/src/main/res/layout/application_list_item.xml
+++ b/app/src/main/res/layout/application_list_item.xml
@@ -93,6 +93,7 @@
android:layout_height="wrap_content"
android:src="@drawable/ic_star"
android:layout_marginBottom="1dp"
+ android:contentDescription="@string/rating"
app:layout_constraintBottom_toBottomOf="@+id/app_icon_card"
app:layout_constraintLeft_toLeftOf="@+id/app_author"/>
@@ -167,6 +168,7 @@
diff --git a/app/src/main/res/layout/categories_list_item.xml b/app/src/main/res/layout/categories_list_item.xml
index 7e8daca7cf982f584b0ddf83cf104debfd2abaf4..489415ba6a1cfb1a262f9d2c549ea0c6343a758c 100644
--- a/app/src/main/res/layout/categories_list_item.xml
+++ b/app/src/main/res/layout/categories_list_item.xml
@@ -69,6 +69,7 @@
android:textAllCaps="false"
android:textColor="#626262"
android:textSize="15sp"
+ android:textIsSelectable="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
diff --git a/app/src/main/res/layout/custom_preference.xml b/app/src/main/res/layout/custom_preference.xml
index 2ebf0bbbdbb6672b2b105174efde4b9aac19adf6..0f9bb16e2abf0bab5c947db7064f5b35055c30a9 100644
--- a/app/src/main/res/layout/custom_preference.xml
+++ b/app/src/main/res/layout/custom_preference.xml
@@ -83,6 +83,7 @@
android:layout_marginStart="18dp"
android:textColor="?android:textColorPrimary"
android:textSize="15sp"
+ android:textIsSelectable="false"
app:layout_constraintStart_toEndOf="@id/avatar"
app:layout_constraintTop_toTopOf="@id/avatar"
app:layout_constraintBottom_toTopOf="@id/email"
@@ -96,6 +97,7 @@
android:layout_marginTop="5dp"
android:textColor="?android:textColorSecondary"
android:textSize="13sp"
+ android:textIsSelectable="false"
app:layout_constraintBottom_toBottomOf="@id/avatar"
app:layout_constraintStart_toEndOf="@id/avatar"
app:layout_constraintTop_toBottomOf="@id/accountType" />
diff --git a/app/src/main/res/layout/fragment_application.xml b/app/src/main/res/layout/fragment_application.xml
index 1d45a7483a180492e09da4c9175c3d445550c05b..e88df680a592c3cc0c8aa7e41a2115792c6d4710 100644
--- a/app/src/main/res/layout/fragment_application.xml
+++ b/app/src/main/res/layout/fragment_application.xml
@@ -50,128 +50,118 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="40dp"
+ android:visibility="gone"
+ android:layout_marginLeft="20dp"
+ android:layout_marginRight="20dp"
+ android:layout_marginTop="20dp"
+ app:cardElevation="8dp">
-
-
+
+
-
-
-
-
+ android:layout_marginLeft="10dp"
+ android:layout_marginRight="10dp"
+ android:gravity="center_vertical"
+ android:textColor="@android:color/white"
+ app:drawableLeftCompat="@drawable/ic_warning_white"
+ android:drawablePadding="15dp"
+ android:text="@string/this_app_may_not_work_properly" />
-
-
-
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:text="@string/why_open_source_version" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_application_download.xml b/app/src/main/res/layout/fragment_application_download.xml
index fcf28d6f1e946de34441b56a07280ece7a70c6d1..072f0cc5c5d3fb54afe5aab411857f6703473a7d 100644
--- a/app/src/main/res/layout/fragment_application_download.xml
+++ b/app/src/main/res/layout/fragment_application_download.xml
@@ -59,7 +59,7 @@
android:layout_height="wrap_content"
android:max="100"
android:layout_gravity="center"
- android:paddingEnd="10dp"
+ android:layout_marginEnd="10dp"
android:visibility="visible"
android:layout_below="@+id/downloadedSize"
diff --git a/app/src/main/res/layout/fragment_application_title.xml b/app/src/main/res/layout/fragment_application_title.xml
index b87327fa179a458fa6517b8e06a6181abe28fad6..a94b2af8c038a37ec2c59c19f4bf8df06d91db66 100644
--- a/app/src/main/res/layout/fragment_application_title.xml
+++ b/app/src/main/res/layout/fragment_application_title.xml
@@ -112,6 +112,7 @@
android:textColor="#626262"
android:textSize="14sp"
android:layout_marginEnd="20dp"
+ android:textIsSelectable="false"
tools:text="Racing" />
diff --git a/app/src/main/res/layout/fragment_apps.xml b/app/src/main/res/layout/fragment_apps.xml
index bd3762065ebc20532c970c6af2680bb3a4b5c943..750b2e148b3bd4f751f3d74a64fb3017598e44b1 100644
--- a/app/src/main/res/layout/fragment_apps.xml
+++ b/app/src/main/res/layout/fragment_apps.xml
@@ -21,7 +21,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:background="@color/colorBackground"
tools:context=".ui.categories.AppsFragment">
diff --git a/app/src/main/res/layout/fragment_categories.xml b/app/src/main/res/layout/fragment_categories.xml
index 1914fe9b0e18b29afdd7ee6d072e36e97a4ad0b2..fb08627d11b92f79b949e8e94d737ddabd9d088a 100644
--- a/app/src/main/res/layout/fragment_categories.xml
+++ b/app/src/main/res/layout/fragment_categories.xml
@@ -22,7 +22,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:background="@color/colorBackground"
tools:context=".ui.categories.CategoriesFragment">
@@ -22,6 +21,7 @@
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher_foreground"
+ android:importantForAccessibility="no"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
diff --git a/app/src/main/res/layout/layout_no_apps_found.xml b/app/src/main/res/layout/layout_no_apps_found.xml
index 28cd682e56bab1f613de6376c4465e33eb5a1ac3..c3bf7568a3095ab35c3500f446a55b3e67df5ceb 100644
--- a/app/src/main/res/layout/layout_no_apps_found.xml
+++ b/app/src/main/res/layout/layout_no_apps_found.xml
@@ -11,6 +11,7 @@
android:layout_width="96dp"
android:layout_height="96dp"
android:src="@drawable/ic_error_circular"
+ android:importantForAccessibility="no"
/>
.
- -->
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/preference_widget_radiobutton.xml b/app/src/main/res/layout/preference_widget_radiobutton.xml
deleted file mode 100644
index 179e45da01e252d342095c47283e6d157a02132b..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/preference_widget_radiobutton.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/layout/shimmer_placeholder_application_list.xml b/app/src/main/res/layout/shimmer_placeholder_application_list.xml
index 82c96e7d00dcb772e6a224c6de96ac7bf4c6564d..55accfc85ef56ac684346d55359e64ae02ddd901 100644
--- a/app/src/main/res/layout/shimmer_placeholder_application_list.xml
+++ b/app/src/main/res/layout/shimmer_placeholder_application_list.xml
@@ -22,7 +22,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
- android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
@@ -106,6 +105,7 @@
android:ellipsize="end"
android:maxLines="1"
android:textColor="?android:textColorPrimary"
+ android:textIsSelectable="false"
android:textSize="14sp" />
@@ -146,6 +146,7 @@
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="8dp"
+ android:importantForAccessibility="no"
android:background="@color/colorGrey" />
diff --git a/app/src/main/res/layout/shimmer_placeholder_categories_child.xml b/app/src/main/res/layout/shimmer_placeholder_categories_child.xml
index 252f230838972c5c5f5ddbca8763e5833cb61b4c..9a76d850a072033c3bb4d058eaa5332c0969b671 100644
--- a/app/src/main/res/layout/shimmer_placeholder_categories_child.xml
+++ b/app/src/main/res/layout/shimmer_placeholder_categories_child.xml
@@ -21,7 +21,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
- android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal">
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 3a33112bb6a66e8dbb3edaa68cf2d4f63a5b9a50..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000000000000000000000000000000000000..c2e7af314936596b9b6aac76d321ddd225a923bf
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 8c2f3adc5eef31839b7c7db456c909b535a65f5a..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000000000000000000000000000000000000..08f0da41cbe6a1caff0e577fb419f837737df11f
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 012f48859559c55d8461540ffe0c0033161033cc..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000000000000000000000000000000000000..4487de43dee7a64ac76e5ad738813534a941a995
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 491a637e51c7c08908f7a613afd35bb0c8323f57..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000000000000000000000000000000000000..0651e4c67010789abf0c7cfead70128b0969ea44
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 0a6cf82cf82ce7c8de0c7bb1890248c2e7965b7f..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000000000000000000000000000000000000..9a6feed61043692575f5b57c773e4a74b1487e91
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dc7be94c3e03b8c562b5090ab5447cad4e89790f..cae7ac9b00c7501cfde6f14010ca86748cf38d7b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -206,7 +206,7 @@
%1$s]]>
When clicked confirm, it will take you to Google Play page for the app to complete the purchase using your browser. Click confirm to purchase %1$s for %2$s.
CONFIRM
- CANCEL
+ @android:string/cancel
Paid apps cannot be installed in anonymous mode. Please log into your Google account to install paid apps.
Purchase complete!
Your app will automatically be downloaded in this device
diff --git a/lint.xml b/lint.xml
index f272eed7caede752c3c7423ddb67b1f164870b33..6be079d1d1576029a51c99c7675b575f49010967 100644
--- a/lint.xml
+++ b/lint.xml
@@ -5,12 +5,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+