diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6baf32e..2526b62 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## [0.2.2] - Fixed PlatformException
+
+* Fixed PlatformException https://github.com/aloisdeniel/flutter_geocoder/issues/29
+* Format code.
+* Update deps.
+
## [0.2.1] - Fixed issues with Uint8List
* Fixed breaking changes in newer SDK versions.
diff --git a/android/build.gradle b/android/build.gradle
index 4761cf6..c6b622c 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.3.0'
+ classpath 'com.android.tools.build:gradle:4.0.1'
}
}
@@ -26,8 +26,7 @@ rootProject.allprojects {
apply plugin: 'com.android.library'
android {
- compileSdkVersion 28
- //buildToolsVersion '28.0.3'
+ compileSdkVersion 29
defaultConfig {
minSdkVersion 16
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index bae5290..b451223 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Fri Jun 23 08:50:38 CEST 2017
+#Wed Sep 02 01:21:30 MSK 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 4895e49..a292f71 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -1,3 +1,2 @@
-
+ package="com.yourcompany.geocoder">
diff --git a/android/src/main/java/com/aloisdeniel/geocoder/GeocoderPlugin.java b/android/src/main/java/com/aloisdeniel/geocoder/GeocoderPlugin.java
index f7cf971..0003336 100644
--- a/android/src/main/java/com/aloisdeniel/geocoder/GeocoderPlugin.java
+++ b/android/src/main/java/com/aloisdeniel/geocoder/GeocoderPlugin.java
@@ -6,6 +6,7 @@
import java.util.HashMap;
import java.io.IOException;
import java.lang.Exception;
+
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
@@ -23,7 +24,8 @@
* NotAvailableException
*/
class NotAvailableException extends Exception {
- NotAvailableException() {}
+ NotAvailableException() {
+ }
}
/**
@@ -31,203 +33,192 @@ class NotAvailableException extends Exception {
*/
public class GeocoderPlugin implements MethodCallHandler {
- private Geocoder geocoder;
-
- public GeocoderPlugin(Context context) {
-
- this.geocoder = new Geocoder(context);
- }
-
- /**
- * Plugin registration.
- */
- public static void registerWith(Registrar registrar) {
- final MethodChannel channel = new MethodChannel(registrar.messenger(), "github.com/aloisdeniel/geocoder");
- channel.setMethodCallHandler(new GeocoderPlugin(registrar.context()));
- }
-
- // MethodChannel.Result wrapper that responds on the platform thread.
- private static class MethodResultWrapper implements Result {
- private Result methodResult;
- private Handler handler;
-
- MethodResultWrapper(Result result) {
- methodResult = result;
- handler = new Handler(Looper.getMainLooper());
- }
-
- @Override
- public void success(final Object result) {
- handler.post(
- new Runnable() {
- @Override
- public void run() {
- methodResult.success(result);
- }
- });
- }
-
- @Override
- public void error(
- final String errorCode, final String errorMessage, final Object errorDetails) {
- handler.post(
- new Runnable() {
- @Override
- public void run() {
- methodResult.error(errorCode, errorMessage, errorDetails);
- }
- });
- }
+ private Geocoder geocoder;
- @Override
- public void notImplemented() {
- handler.post(
- new Runnable() {
- @Override
- public void run() {
- methodResult.notImplemented();
- }
- });
+ public GeocoderPlugin(Context context) {
+ this.geocoder = new Geocoder(context);
}
- }
- @Override
- public void onMethodCall(MethodCall call, Result rawResult) {
- Result result = new MethodResultWrapper(rawResult);
-
- if (call.method.equals("findAddressesFromQuery")) {
- String address = (String) call.argument("address");
- findAddressesFromQuery(address, result);
- }
- else if (call.method.equals("findAddressesFromCoordinates")) {
- float latitude = ((Number) call.argument("latitude")).floatValue();
- float longitude = ((Number) call.argument("longitude")).floatValue();
- findAddressesFromCoordinates(latitude,longitude, result);
- } else {
- result.notImplemented();
+ /**
+ * Plugin registration.
+ */
+ public static void registerWith(Registrar registrar) {
+ final MethodChannel channel = new MethodChannel(registrar.messenger(), "github.com/aloisdeniel/geocoder");
+ channel.setMethodCallHandler(new GeocoderPlugin(registrar.context()));
}
- }
- private void assertPresent() throws NotAvailableException {
- if (!geocoder.isPresent()) {
- throw new NotAvailableException();
- }
- }
+ // MethodChannel.Result wrapper that responds on the platform thread.
+ private static class MethodResultWrapper implements Result {
+ private Result methodResult;
+ private Handler handler;
- private void findAddressesFromQuery(final String address, final Result result) {
+ MethodResultWrapper(Result result) {
+ methodResult = result;
+ handler = new Handler(Looper.getMainLooper());
+ }
- final GeocoderPlugin plugin = this;
- new AsyncTask>() {
@Override
- protected List doInBackground(Void... params) {
- try {
- plugin.assertPresent();
- return geocoder.getFromLocationName(address, 20);
- } catch (IOException ex) {
- return null;
- } catch (NotAvailableException ex) {
- return new ArrayList<>();
- }
+ public void success(final Object result) {
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ methodResult.success(result);
+ }
+ });
}
@Override
- protected void onPostExecute(List addresses) {
- if (addresses != null) {
- if (addresses.isEmpty())
- result.error("not_available", "Empty", null);
-
- else result.success(createAddressMapList(addresses));
- }
- else result.error("failed", "Failed", null);
+ public void error(final String errorCode, final String errorMessage, final Object errorDetails) {
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ methodResult.error(errorCode, errorMessage, errorDetails);
+ }
+ });
}
- }.execute();
- }
- private void findAddressesFromCoordinates(final float latitude, final float longitude, final Result result) {
- final GeocoderPlugin plugin = this;
- new AsyncTask>() {
@Override
- protected List doInBackground(Void... params) {
- try {
- plugin.assertPresent();
- return geocoder.getFromLocation(latitude, longitude, 20);
- } catch (IOException ex) {
- return null;
- } catch (NotAvailableException ex) {
- return new ArrayList<>();
- }
+ public void notImplemented() {
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ methodResult.notImplemented();
+ }
+ });
}
+ }
- @Override
- protected void onPostExecute(List addresses) {
- if (addresses != null) {
- if (addresses.isEmpty())
- result.error("not_available", "Empty", null);
+ @Override
+ public void onMethodCall(MethodCall call, Result rawResult) {
+ Result result = new MethodResultWrapper(rawResult);
+
+ if (call.method.equals("findAddressesFromQuery")) {
+ String address = (String) call.argument("address");
+ findAddressesFromQuery(address, result);
+ } else if (call.method.equals("findAddressesFromCoordinates")) {
+ float latitude = ((Number) call.argument("latitude")).floatValue();
+ float longitude = ((Number) call.argument("longitude")).floatValue();
+ findAddressesFromCoordinates(latitude, longitude, result);
+ } else {
+ result.notImplemented();
+ }
+ }
- else result.success(createAddressMapList(addresses));
- }
- else result.error("failed", "Failed", null);
+ private void assertPresent() throws NotAvailableException {
+ if (!Geocoder.isPresent()) {
+ throw new NotAvailableException();
}
- }.execute();
- }
+ }
+
+ private void findAddressesFromQuery(final String address, final Result result) {
- private Map createCoordinatesMap(Address address) {
+ final GeocoderPlugin plugin = this;
+ new AsyncTask>() {
+ @Override
+ protected List doInBackground(Void... params) {
+ try {
+ plugin.assertPresent();
+ return geocoder.getFromLocationName(address, 20);
+ } catch (IOException ex) {
+ result.error("failed", "IOException", null);
+ return null;
+ } catch (NotAvailableException ex) {
+ result.error("not_available", "NotAvailableException", null);
+ return null;
+ }
+ }
- if(address == null)
- return null;
+ @Override
+ protected void onPostExecute(List addresses) {
+ if (addresses != null) {
+ result.success(createAddressMapList(addresses));
+ }
+ }
+ }.execute();
+ }
- Map result = new HashMap();
+ private void findAddressesFromCoordinates(final float latitude, final float longitude, final Result result) {
+ final GeocoderPlugin plugin = this;
+ new AsyncTask>() {
+ @Override
+ protected List doInBackground(Void... params) {
+ try {
+ plugin.assertPresent();
+ return geocoder.getFromLocation(latitude, longitude, 20);
+ } catch (IOException ex) {
+ result.error("failed", "IOException", null);
+ return null;
+ } catch (NotAvailableException ex) {
+ result.error("not_available", "NotAvailableException", null);
+ return null;
+ }
+ }
- result.put("latitude", address.getLatitude());
- result.put("longitude", address.getLongitude());
+ @Override
+ protected void onPostExecute(List addresses) {
+ if (addresses != null) {
+ result.success(createAddressMapList(addresses));
+ }
+ }
+ }.execute();
+ }
- return result;
- }
+ private Map createCoordinatesMap(Address address) {
+ if (address == null) {
+ return null;
+ }
- private Map createAddressMap(Address address) {
+ Map result = new HashMap<>();
- if(address == null)
- return null;
+ result.put("latitude", address.getLatitude());
+ result.put("longitude", address.getLongitude());
- // Creating formatted address
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i <= address.getMaxAddressLineIndex(); i++) {
- if (i > 0) {
- sb.append(", ");
- }
- sb.append(address.getAddressLine(i));
+ return result;
}
- Map result = new HashMap();
-
- result.put("coordinates", createCoordinatesMap(address));
- result.put("featureName", address.getFeatureName());
- result.put("countryName", address.getCountryName());
- result.put("countryCode", address.getCountryCode());
- result.put("locality", address.getLocality());
- result.put("subLocality", address.getSubLocality());
- result.put("thoroughfare", address.getThoroughfare());
- result.put("subThoroughfare", address.getSubThoroughfare());
- result.put("adminArea", address.getAdminArea());
- result.put("subAdminArea", address.getSubAdminArea());
- result.put("addressLine", sb.toString());
- result.put("postalCode", address.getPostalCode());
+ private Map createAddressMap(Address address) {
+ if (address == null) {
+ return null;
+ }
- return result;
- }
+ // Creating formatted address
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i <= address.getMaxAddressLineIndex(); i++) {
+ if (i > 0) {
+ sb.append(", ");
+ }
+ sb.append(address.getAddressLine(i));
+ }
- private List