The 100.13.1 patch release of ArcGIS Runtime SDKs for Android, iOS, Java, .NET, and Qt is now available to resolve vulnerabilities identified in the 3rd-party library Expat used by ArcGIS Runtime for XML parsing.
This blog aims to build an example of MVVM using Android architecture components and Hilt dependency injection. The result will be a very simple Geotrigger Monitoring solution which can easily be expanded upon or integrated into a modern Android app.
Is your GIS data ready forscoped storage in August?Google’s long-hinted (and delayed) changes to local storage will have to be in place for apps hosted on the Google Play store.In this post I'lltell you what we’ve learnedabout the changes and how we handled them on theAndroid samplesteam.
GIS is fundamentally a data driven science.TheArcGIS Runtime SDK provides the tools you need to manage,analyzeandaccessGISdatain your apps. For mobile devices, that can mean accessing data servicesovermobile networks,from service endpointshosted onArcGIS OnlineorArcGIS Enterprise.It can also mean accessinglocaldataonthe device, whether that’s because the datasetin question is verylarge orbecauseuserworkflows meandevices are likely to beusedin areasofpoor mobilenetworkcoverage.
This directory is divided into internal,externaland sharedstorage directories. Internal storage isaccessed with a call togetFilesDirand is for data which will not be available to any other apps (and will be encrypted from Android 10 onwards). External storage, accessed with a call togetExternalFilesDir,is for data which can be accessed by other apps (and critically,ADB). Both of these storage directories are scoped to the app and will be deleted on uninstallation of the app itself. A third directory, shared storage,is more similar to the old storage format, but is for specific media files and of less relevance to GIS data.
With ArcGIS Runtime,your decision on whether touse internalorexternal storageshould be driven bythe intended workflow ofyourapp. Ifyourapp is downloading sensitive client map data as aMobileMapPackagewith theOfflineMapTask, that data is probably best stored in the internal storage of the appwhich will use that data.However,a user downloading amobile map packagewith theoffline map task,or sideloading an.mmpkfile onto a device withADB, may wish tostore the data in a place which allows for access by other apps. They mightwantto use the data in different ArcGIS Runtime apps or simplybeable to manipulate those files from a file manager app. If those were expected workflows, external storage would be the best option.
In the event that you don’t think you’ll have timeto get your app ready by then, there’s one final“get out of jail free card”. Adding the line`requestLegacyExternalStorage=true` to your app’s AndroidManifest.xmlfilewill allow your Android 10 app to use the old storage model.But with plans for Android 11well under way, it’s best to make the change to the new scoped storage model sooner rather than later!