summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2017-05-08 12:07:00 +0200
committerGitHub <noreply@github.com>2017-05-08 12:07:00 +0200
commit45545e15fc41d5beb98612736ee624272b192096 (patch)
tree1f88297721f821d15dc4ca459dbaf3afd4b6f07f /platform
parentdd353a60d1656f13351e8caa69e902b7f3111a02 (diff)
downloadqtlocation-mapboxgl-45545e15fc41d5beb98612736ee624272b192096.tar.gz
[android] - show error message when no browser is installed on the device of the user. (#8901)
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java26
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml1
2 files changed, 18 insertions, 9 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java
index 2ae37acb9c..5113a0cc73 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java
@@ -1,5 +1,6 @@
package com.mapbox.mapboxsdk.maps;
+import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -12,6 +13,7 @@ import android.text.TextUtils;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.ArrayAdapter;
+import android.widget.Toast;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.camera.CameraPosition;
@@ -66,7 +68,7 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface.
if (isLatestEntry(which)) {
showTelemetryDialog();
} else {
- showAttributionWebPage(which);
+ showMapFeedbackWebPage(which);
}
}
@@ -88,10 +90,7 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface.
builder.setNeutralButton(R.string.mapbox_attributionTelemetryNeutral, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- String url = context.getResources().getString(R.string.mapbox_telemetryLink);
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setData(Uri.parse(url));
- context.startActivity(intent);
+ showWebPage(context.getResources().getString(R.string.mapbox_telemetryLink));
dialog.cancel();
}
});
@@ -105,14 +104,12 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface.
builder.show();
}
- private void showAttributionWebPage(int which) {
- Intent intent = new Intent(Intent.ACTION_VIEW);
+ private void showMapFeedbackWebPage(int which) {
String url = attributionMap.get(attributionKeys[which]);
if (url.contains(MAP_FEEDBACK_URL)) {
url = buildMapFeedbackMapUrl(mapboxMap.getCameraPosition());
}
- intent.setData(Uri.parse(url));
- context.startActivity(intent);
+ showWebPage(url);
}
private String buildMapFeedbackMapUrl(CameraPosition cameraPosition) {
@@ -122,6 +119,17 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface.
(int) cameraPosition.zoom) : MAP_FEEDBACK_URL;
}
+ private void showWebPage(@NonNull String url) {
+ try {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url));
+ context.startActivity(intent);
+ } catch (ActivityNotFoundException exception) {
+ // explicitly handling if the device hasn't have a web browser installed. #8899
+ Toast.makeText(context, R.string.mapbox_attributionErrorNoBrowser, Toast.LENGTH_LONG).show();
+ }
+ }
+
private static class AttributionBuilder {
private final HashMap<String, String> map = new LinkedHashMap<>();
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml
index 6c427d540b..0862305cfb 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml
@@ -10,6 +10,7 @@
<string name="mapbox_attributionTelemetryPositive">Agree</string>
<string name="mapbox_attributionTelemetryNegative">Disagree</string>
<string name="mapbox_attributionTelemetryNeutral">More info</string>
+ <string name="mapbox_attributionErrorNoBrowser">No web browser installed on device, can\'t open web page.</string>
<string name="mapbox_offline_error_region_definition_invalid">Provided OfflineRegionDefinition doesn\'t fit the world bounds: %s</string>
<string name="mapbox_telemetrySettings">Telemetry Settings</string>
<string name="mapbox_telemetryLink" translatable="false">https://www.mapbox.com/telemetry/</string>