Skip to content

Commit

Permalink
feat(#7): Android 11 support
Browse files Browse the repository at this point in the history
  • Loading branch information
sgrimault committed Sep 4, 2021
1 parent 424a308 commit a15ac83
Show file tree
Hide file tree
Showing 18 changed files with 399 additions and 84 deletions.
4 changes: 4 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 0 additions & 12 deletions .idea/runConfigurations.xml

This file was deleted.

7 changes: 5 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ apply plugin: 'kotlin-android'
version = "0.2.9"

android {
compileSdkVersion 29
compileSdkVersion 30

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
Expand All @@ -14,7 +14,7 @@ android {
defaultConfig {
applicationId "fr.geonature.maps.sample"
minSdkVersion 21
targetSdkVersion 29
targetSdkVersion 30
versionCode updateVersionCode(module.name)
versionName version
buildConfigField "String", "BUILD_DATE", "\"" + new Date().getTime() + "\""
Expand All @@ -23,6 +23,9 @@ android {
}

buildTypes {
debug {
versionNameSuffix ".${defaultConfig.versionCode}-DEV"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/fr/geonature/maps/sample/ui/home/HomeActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import androidx.appcompat.app.AppCompatActivity
import fr.geonature.maps.sample.R
import fr.geonature.maps.sample.ui.map.MapActivity
import fr.geonature.maps.settings.io.MapSettingsReader
import fr.geonature.mountpoint.util.FileUtils
import java.io.InputStreamReader

/**
Expand All @@ -34,6 +35,15 @@ class HomeActivity : AppCompatActivity(), HomeListFragment.OnHomeListFragmentLis
.commit()
}

val osmdroidFile = FileUtils.getFile(
FileUtils.getExternalStorageDirectory(application),
"osmdroid"
)
Log.d(
TAG,
"${osmdroidFile.absolutePath}: (exists: ${osmdroidFile.exists()}, ${if (osmdroidFile.canRead()) "r" else ""}${if (osmdroidFile.canWrite()) "w" else ""}${if (osmdroidFile.canExecute()) "x" else ""})"
)

mapSettingsResultLauncher = registerForActivityResult(StartActivityForResult()) { result ->
when (result.resultCode) {
RESULT_CANCELED -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package fr.geonature.maps.sample.ui.settings

import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import fr.geonature.maps.sample.R
import fr.geonature.maps.sample.util.PreferencesUtils.updatePreferences
Expand All @@ -19,26 +23,52 @@ class PreferencesFragment : PreferenceFragmentCompat() {

setDefaultPreferences(arguments?.getParcelable(ARG_MAP_SETTINGS))
updatePreferences(preferenceScreen)
configurePermissions()
}

override fun onCreatePreferences(
savedInstanceState: Bundle?,
rootKey: String?
) {
addPreferencesFromResource(fr.geonature.maps.R.xml.map_preferences)
addPreferencesFromResource(R.xml.preferences)
addPreferencesFromResource(R.xml.preferences_permissions)
addPreferencesFromResource(R.xml.preferences_storage)
addPreferencesFromResource(R.xml.preferences_about)
}

private fun setDefaultPreferences(appSettings: MapSettings?) {
val context = context ?: return

MapSettingsPreferencesUtils.setDefaultPreferences(
context,
MapSettings.Builder.newInstance().from(appSettings).build(),
MapSettings.Builder.newInstance()
.from(appSettings)
.build(),
preferenceScreen
)
}

private fun configurePermissions() {
preferenceScreen
.findPreference<Preference>(getString(R.string.preference_category_permissions_configure_key))
?.apply {
onPreferenceClickListener = Preference.OnPreferenceClickListener {
startActivity(
Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts(
"package",
it.context.packageName,
null
)
)
)

true
}
}
}

companion object {

private const val ARG_MAP_SETTINGS = "arg_map_settings"
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-fr/prefs.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="preference_category_permissions">Permissions</string>
<string name="preference_category_permissions_configure">Gérer les permissions</string>
<string name="preference_category_storage">Mémoire</string>
<string name="preference_category_storage_internal">Mémoire interne</string>
<string name="preference_category_storage_external">Mémoire externe</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values/prefs.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="preference_category_permissions">Permissions</string>
<string name="preference_category_permissions_configure">Manage permissions</string>
<string name="preference_category_permissions_configure_key" translatable="false">permissions</string>
<string name="preference_category_storage">Storage</string>
<string name="preference_category_storage_key" translatable="false">storage</string>
<string name="preference_category_storage_internal">Internal storage</string>
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/res/xml/preferences_about.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory android:title="@string/preference_category_about">
<Preference
android:key="@string/preference_category_about_app_version_key"
android:selectable="false"
android:title="@string/preference_category_about_app_version" />
</PreferenceCategory>

</PreferenceScreen>
11 changes: 11 additions & 0 deletions app/src/main/res/xml/preferences_permissions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory android:title="@string/preference_category_permissions">
<Preference
android:key="@string/preference_category_permissions_configure_key"
android:title="@string/preference_category_permissions_configure" />
</PreferenceCategory>

</PreferenceScreen>
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory
android:key="@string/activity_preferences_title"
android:title="@string/preference_category_storage">
<PreferenceCategory android:title="@string/preference_category_storage">
<Preference
android:key="@string/preference_category_storage_internal_key"
android:selectable="false"
Expand All @@ -15,11 +13,5 @@
android:selectable="false"
android:title="@string/preference_category_storage_external" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/preference_category_about">
<Preference
android:key="@string/preference_category_about_app_version_key"
android:selectable="false"
android:title="@string/preference_category_about_app_version" />
</PreferenceCategory>

</PreferenceScreen>
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.5.21'
ext.kotlin_version = '1.5.30'

repositories {
google()
Expand Down
23 changes: 16 additions & 7 deletions maps/build.gradle
Original file line number Diff line number Diff line change
@@ -1,23 +1,32 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

version = "0.5.8"
version = "0.5.9"

android {
compileSdkVersion 29
compileSdkVersion 30

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}

defaultConfig {
minSdkVersion 21
targetSdkVersion 29
targetSdkVersion 30
versionCode updateVersionCode(module.name)
versionName version
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

buildTypes {
debug {
versionNameSuffix ".${defaultConfig.versionCode}-DEV"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
Expand All @@ -37,11 +46,11 @@ dependencies {
implementation project(':mountpoint')

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1'

implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
implementation 'androidx.lifecycle:lifecycle-common:2.3.1'
implementation "androidx.lifecycle:lifecycle-common-java8:2.3.1"
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'com.google.android.material:material:1.4.0'
Expand Down
20 changes: 14 additions & 6 deletions maps/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.geonature.maps">
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="fr.geonature.maps">

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
android:minSdkVersion="30"
tools:ignore="ScopedStorage" />

</manifest>
Loading

0 comments on commit a15ac83

Please sign in to comment.