[android] - replace hardcode telemetry settings string by resources string

This commit is contained in:
Tobrun
2018-08-22 07:20:59 +02:00
committed by Tobrun
parent 1662be7ea5
commit 520df7f020
3 changed files with 48 additions and 6 deletions

View File

@@ -1,10 +1,13 @@
package com.mapbox.mapboxsdk.attribution;
import android.content.Context;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.URLSpan;
import com.mapbox.mapboxsdk.R;
import java.lang.ref.WeakReference;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -17,6 +20,7 @@ import java.util.Set;
*/
public class AttributionParser {
private final WeakReference<Context> context;
private final Set<Attribution> attributions = new LinkedHashSet<>();
private final String attributionData;
private final boolean withImproveMap;
@@ -24,8 +28,9 @@ public class AttributionParser {
private final boolean withTelemetryAttribution;
private final boolean withMapboxAttribution;
AttributionParser(String attributionData, boolean withImproveMap, boolean withCopyrightSign,
boolean withTelemetryAttribution, boolean withMapboxAttribution) {
AttributionParser(WeakReference<Context> context, String attributionData, boolean withImproveMap,
boolean withCopyrightSign, boolean withTelemetryAttribution, boolean withMapboxAttribution) {
this.context = context;
this.attributionData = attributionData;
this.withImproveMap = withImproveMap;
this.withCopyrightSign = withCopyrightSign;
@@ -167,7 +172,13 @@ public class AttributionParser {
*/
private void addAdditionalAttributions() {
if (withTelemetryAttribution) {
attributions.add(new Attribution(Attribution.TELEMETRY, Attribution.TELEMETRY_URL));
Context context = this.context.get();
attributions.add(
new Attribution(
context != null ? context.getString(R.string.mapbox_telemetrySettings) : Attribution.TELEMETRY,
Attribution.TELEMETRY_URL
)
);
}
}
@@ -196,6 +207,7 @@ public class AttributionParser {
* </p>
*/
public static class Options {
private WeakReference<Context> context;
private boolean withImproveMap = true;
private boolean withCopyrightSign = true;
private boolean withTelemetryAttribution = false;
@@ -227,6 +239,11 @@ public class AttributionParser {
return this;
}
public Options withContext(Context context) {
this.context = new WeakReference<>(context);
return this;
}
public AttributionParser build() {
if (attributionDataStringArray == null) {
throw new IllegalStateException("Using builder without providing attribution data");
@@ -234,6 +251,7 @@ public class AttributionParser {
String fullAttributionString = parseAttribution(attributionDataStringArray);
AttributionParser attributionParser = new AttributionParser(
context,
fullAttributionString,
withImproveMap,
withCopyrightSign,

View File

@@ -17,10 +17,12 @@ import com.mapbox.mapboxsdk.attribution.AttributionParser;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.style.sources.Source;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.Locale;
/**
* Responsible for managing attribution interactions on the map.
@@ -47,7 +49,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
// Called when someone presses the attribution icon on the map
@Override
public void onClick(View view) {
attributionSet = new AttributionBuilder(mapboxMap).build();
attributionSet = new AttributionBuilder(mapboxMap, view.getContext()).build();
boolean isActivityFinishing = false;
if (context instanceof Activity) {
@@ -148,12 +150,19 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
private static class AttributionBuilder {
private final MapboxMap mapboxMap;
private final WeakReference<Context> context;
AttributionBuilder(MapboxMap mapboxMap) {
AttributionBuilder(MapboxMap mapboxMap, Context context) {
this.mapboxMap = mapboxMap;
this.context = new WeakReference<>(context);
}
private Set<Attribution> build() {
Context context = this.context.get();
if (context == null) {
return Collections.emptySet();
}
List<String> attributions = new ArrayList<>();
for (Source source : mapboxMap.getSources()) {
attributions.add(source.getAttribution());
@@ -162,6 +171,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
return new AttributionParser.Options()
.withCopyrightSign(true)
.withImproveMap(true)
.withContext(context)
.withTelemetryAttribution(true)
.withAttributionData(attributions.toArray(new String[attributions.size()]))
.build().getAttributions();