AndroidManifest.xml: remove filter for intents once thrown by Google Navigation

This commit is contained in:
Andreas Schildbach 2022-08-23 16:55:28 +02:00
parent da08b96180
commit 7aeee3c505
3 changed files with 1 additions and 118 deletions

View file

@ -288,12 +288,6 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<data android:scheme="geo" /> <data android:scheme="geo" />
</intent-filter> </intent-filter>
<!-- thrown by google maps when starting navigation -->
<intent-filter android:label="@string/directions_intentfilter_title">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="google.navigation" />
</intent-filter>
</activity> </activity>
<activity <activity

View file

@ -43,15 +43,7 @@ public class LocationUriParser {
final String scheme = uri.getScheme(); final String scheme = uri.getScheme();
if ("google.navigation".equals(scheme)) { if ("geo".equals(scheme)) {
final Location location;
if (uri.isOpaque())
location = parseGoogleNavigation(uri.getSchemeSpecificPart());
else
location = parseGoogleNavigation(uri.getQuery());
return new Location[] { location };
} else if ("geo".equals(scheme)) {
final Location location = parseGeo(uri.getSchemeSpecificPart().replaceAll(",?\n+", ",+")); final Location location = parseGeo(uri.getSchemeSpecificPart().replaceAll(",?\n+", ",+"));
return new Location[] { location }; return new Location[] { location };
@ -60,25 +52,6 @@ public class LocationUriParser {
throw new IllegalArgumentException("cannot parse: '" + encodedUriString + "'"); throw new IllegalArgumentException("cannot parse: '" + encodedUriString + "'");
} }
private static Location parseGoogleNavigation(final String query) {
final String q = getQueryParameter(query, "q");
final String ll = getQueryParameter(query, "ll");
final String title = getQueryParameter(query, "title");
if (ll != null) {
return parseAddrParam(ll, title != null ? title : q);
} else if (q != null) {
final Location location = parseAddrParam(q, title);
if (location != null)
return location;
else
return new Location(LocationType.ANY, null, null, q);
}
throw new IllegalArgumentException("cannot parse: '" + query + "'");
}
private static final Pattern P_URI_GEO = Pattern.compile("(-?\\d*\\.?\\d+),(-?\\d*\\.?\\d+)", Pattern.DOTALL); private static final Pattern P_URI_GEO = Pattern.compile("(-?\\d*\\.?\\d+),(-?\\d*\\.?\\d+)", Pattern.DOTALL);
private static Location parseGeo(final String query) throws NumberFormatException { private static Location parseGeo(final String query) throws NumberFormatException {

View file

@ -23,90 +23,6 @@ import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
public class LocationUriParserTest { public class LocationUriParserTest {
@Test
public void googleNavigationThrownByGoogleNow() throws Exception {
// "Take me to Alexanderplatz"
final Location[] results = LocationUriParser.parseLocations(
"google.navigation:title=Alexanderplatz,+10178+Berlin&ll=52.521918,13.413215&token=Fb5rIQMdX6vMACFuFuRmwwH8MA&entry=r&mode=d");
Assert.assertEquals(1, results.length);
final Location location = results[0];
Assert.assertEquals(LocationType.ADDRESS, location.type);
Assert.assertEquals(13413215, location.getLonAs1E6());
Assert.assertEquals(52521918, location.getLatAs1E6());
Assert.assertEquals("Alexanderplatz, 10178 Berlin", location.name);
}
@Test
public void googleNavigation() throws Exception {
final Location[] results = LocationUriParser.parseLocations(
"google.navigation:///?ll=52.512845,13.420671&q=Rungestraße+20,+10179+Berlin&title=c-base&entry=w&opt=+flg=0x3000000");
Assert.assertEquals(1, results.length);
final Location location = results[0];
Assert.assertEquals(LocationType.ADDRESS, location.type);
Assert.assertEquals(13420671, location.getLonAs1E6());
Assert.assertEquals(52512845, location.getLatAs1E6());
Assert.assertEquals("c-base", location.name);
}
@Test
public void googleNavigationOpaque() throws Exception {
final Location[] results = LocationUriParser.parseLocations(
"google.navigation:q=Work&ll=47.460044860839844,9.6347074508667&mode=d&entry=r&altvia=47.4140989,9.7192978&altvia=47.460046399999996,9.6350649");
Assert.assertEquals(1, results.length);
final Location location = results[0];
Assert.assertEquals(LocationType.ADDRESS, location.type);
Assert.assertEquals(9634707, location.getLonAs1E6());
Assert.assertEquals(47460045, location.getLatAs1E6());
Assert.assertEquals("Work", location.name);
}
@Test
public void googleNavigationQueryOnly() throws Exception {
final Location[] results = LocationUriParser.parseLocations("google.navigation:///?q=gleimstr.&mode=w&entry=v");
Assert.assertEquals(1, results.length);
final Location location = results[0];
Assert.assertEquals(LocationType.ANY, location.type);
Assert.assertFalse(location.hasCoord());
Assert.assertEquals("gleimstr.", location.name);
}
@Test
public void googleNavigationTitle() throws Exception {
final Location[] results = LocationUriParser.parseLocations(
"google.navigation:///?ll=52.535836,13.401525&title=Zionskirchstraße+7,+10119+Berlin,+Germany&entry=w");
Assert.assertEquals(1, results.length);
final Location location = results[0];
Assert.assertEquals(LocationType.ADDRESS, location.type);
Assert.assertEquals(13401525, location.getLonAs1E6());
Assert.assertEquals(52535836, location.getLatAs1E6());
Assert.assertEquals("Zionskirchstraße 7, 10119 Berlin, Germany", location.name);
}
@Test
public void googleNavigationQueryOnlyMixed() throws Exception {
final Location[] results = LocationUriParser.parseLocations(
"google.navigation:///?q=52.513064,13.420106000000033(C-Base,+Rungestraße,+Berlin,+Germany)&entry=w");
Assert.assertEquals(1, results.length);
final Location location = results[0];
Assert.assertEquals(LocationType.ADDRESS, location.type);
Assert.assertEquals(13420106, location.getLonAs1E6());
Assert.assertEquals(52513064, location.getLatAs1E6());
Assert.assertEquals("C-Base, Rungestraße, Berlin, Germany", location.name);
}
@Test @Test
public void contacts() throws Exception { public void contacts() throws Exception {
final Location[] results = LocationUriParser.parseLocations("geo:0,0?q=Karl-Marx-Allee+84,+Berlin"); final Location[] results = LocationUriParser.parseLocations("geo:0,0?q=Karl-Marx-Allee+84,+Berlin");