diff --git a/build.gradle b/build.gradle index d1f65c55b..ab370c0e2 100644 --- a/build.gradle +++ b/build.gradle @@ -107,7 +107,6 @@ android { nightly { dimension 'version' applicationId 'de.dennisguse.opentracks.nightly' - resValue 'string', 'applicationId', 'de.dennisguse.opentracks.nightly' versionCode getVersionCodeNightly() versionName getVersionName() @@ -119,7 +118,6 @@ android { // Non-reproducible: https://f-droid.org/de/packages/de.dennisguse.opentracks/ dimension 'version' applicationId 'de.dennisguse.opentracks' - resValue 'string', 'applicationId', 'de.dennisguse.opentracks' versionNameSuffix 'irreproducible' } reproducible { @@ -128,7 +126,6 @@ android { // PlayStore: https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore dimension 'version' applicationId 'de.dennisguse.opentracks.playstore' - resValue 'string', 'applicationId', 'de.dennisguse.opentracks.playstore' base.archivesName = "de.dennisguse.opentracks.playstore_${getVersionName()}_${android.defaultConfig.versionCode}" @@ -169,3 +166,12 @@ dependencies { androidTestUtil 'androidx.test:orchestrator:1.6.1' } + +androidComponents { + onVariants(selector().all()) { variant -> + variant.resValues.put( + new com.android.build.api.variant.impl.ResValueKeyImpl("string", "applicationId"), + new com.android.build.api.variant.ResValue(variant.applicationId.get(), null) + ) + } +} diff --git a/src/androidTest/java/de/dennisguse/opentracks/settings/ImportExportSettingsIntentTest.java b/src/androidTest/java/de/dennisguse/opentracks/settings/ImportExportSettingsIntentTest.java new file mode 100644 index 000000000..f05b83f25 --- /dev/null +++ b/src/androidTest/java/de/dennisguse/opentracks/settings/ImportExportSettingsIntentTest.java @@ -0,0 +1,51 @@ +package de.dennisguse.opentracks.settings; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; + +import androidx.test.core.app.ApplicationProvider; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import de.dennisguse.opentracks.BuildConfig; +import de.dennisguse.opentracks.R; + +@RunWith(AndroidJUnit4.class) +public class ImportExportSettingsIntentTest { + + private final Context context = ApplicationProvider.getApplicationContext(); + + @Test + public void applicationIdResource_matchesInstalledPackage() { + assertEquals(BuildConfig.APPLICATION_ID, context.getString(R.string.applicationId)); + assertEquals(context.getPackageName(), context.getString(R.string.applicationId)); + } + + @Test + public void importExportPreferenceTargets_areResolvableInCurrentPackage() throws PackageManager.NameNotFoundException { + assertResolvable("de.dennisguse.opentracks.io.file.importer.DirectoryChooserActivity$ImportDirectoryChooserActivity"); + assertResolvable("de.dennisguse.opentracks.io.file.importer.DirectoryChooserActivity$ExportDirectoryChooserActivity"); + assertResolvable("de.dennisguse.opentracks.io.file.importer.DirectoryChooserActivity$ExportDirectoryChooserOneFileActivity"); + assertResolvable("de.dennisguse.opentracks.io.file.importer.DirectoryChooserActivity$DefaultTrackExportDirectoryChooserActivity"); + } + + private void assertResolvable(String activityClassName) throws PackageManager.NameNotFoundException { + String applicationId = context.getString(R.string.applicationId); + ComponentName componentName = new ComponentName(applicationId, activityClassName); + + ActivityInfo activityInfo = context.getPackageManager().getActivityInfo(componentName, 0); + assertEquals(applicationId, activityInfo.packageName); + + ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(new Intent().setComponent(componentName), 0); + assertNotNull(resolveInfo); + } +} diff --git a/src/debug/res/values/strings.xml b/src/debug/res/values/strings.xml index 350355fb2..994e901db 100644 --- a/src/debug/res/values/strings.xml +++ b/src/debug/res/values/strings.xml @@ -14,5 +14,5 @@ See the License for the specific language governing permissions and limitations under the License. --> - OpenTracks (Debug) + OpenTracks (Debug) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 6c8d740ff..c231beac1 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -78,7 +78,7 @@ limitations under the License. android:hardwareAccelerated="true" android:hasFragileUserData="false" android:icon="@drawable/ic_launcher" - android:label="@string/app_name" + android:label="@string/launcher_name" android:supportsRtl="true" android:theme="@style/DayNightDynamicTheme"> diff --git a/src/main/res/values/do_not_translate.xml b/src/main/res/values/do_not_translate.xml index 0bc8fc9ad..a8bd70cdf 100644 --- a/src/main/res/values/do_not_translate.xml +++ b/src/main/res/values/do_not_translate.xml @@ -16,6 +16,7 @@ limitations under the License. https://codeberg.org/OpenTracksApp/OpenTracks OpenTracks + OpenTracks EGM2008 WGS84 diff --git a/src/nightly/res/values/strings.xml b/src/nightly/res/values/strings.xml index 16089f443..291ee71e9 100644 --- a/src/nightly/res/values/strings.xml +++ b/src/nightly/res/values/strings.xml @@ -1,4 +1,4 @@ - OpenTracks (Nightly) + OpenTracks (Nightly)