Используйте геокодер. Передайте широту и долготу и получите название города и адрес.
try {
Geocoder geo = new Geocoder(this.getApplicationContext(), Locale.getDefault());
List < Address > addresses = geo.getFromLocation(latitude, longitude, 1);
if (addresses.isEmpty()) {
addres.setText("Waiting for Location");
} else {
if (addresses.size() > 0) {
addres.setText(addresses.get(0).getFeatureName() + ", " + addresses.get(0).getLocality() + ", " + addresses.get(0).getAdminArea() + ", " + addresses.get(0).getCountryName());
//Toast.makeText(getApplicationContext(), "Address:- " + addresses.get(0).getFeatureName() + addresses.get(0).getAdminArea() + addresses.get(0).getLocality(), Toast.LENGTH_LONG).show();
}
}
} catch (Exception e) {
e.printStackTrace(); // getFromLocation() may sometimes fail
}
Да, вы можете копировать поверх предварительно заполненного постоянного хранилища.
Я создал приложение Mac, которое заполняет хранилище. Он копируется в мой комплект и при запуске копируется в каталог Docs. Это прекрасно работает. Мне сказали, что пример Core Data Books был разработан таким же образом.
Обратите внимание, это не означает, что вы можете просто скопировать любой старый файл SQLite. Это должно быть постоянное хранилище Core Data, хотя я думаю, вы понимаете это на основании своего вопроса.
На самом деле есть уловка: вы должны назвать файл, который вы собираетесь копировать, с расширением, отличным от «.sqlite», «.bin» подойдет. В противном случае Xcode изменит содержимое файла при его копировании в приложение на этапе сборки и не загрузится.