From aecc4705e58c9d30ff0a09ddfddcd314612e9479 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Fri, 31 May 2013 18:48:01 +0200 Subject: [PATCH] Add old address plugin to source code --- .../src/net/osmand/router/TurnType.java | 4 + OsmAnd/AndroidManifest.xml | 1 + .../activities/search/GeoIntentActivity.java | 38 +++--- .../plus/routing/RouteCalculationResult.java | 7 +- .../osmand/plus/routing/RouteProvider.java | 2 +- .../net/osmand/plus/views/TurnPathHelper.java | 2 +- .../mapwidgets/RouteInfoWidgetsFactory.java | 4 +- plugins/OsmAnd-AddressPlugin/.classpath | 8 ++ plugins/OsmAnd-AddressPlugin/.gitignore | 4 + plugins/OsmAnd-AddressPlugin/.project | 33 +++++ .../OsmAnd-AddressPlugin/AndroidManifest.xml | 43 +++++++ .../OsmAnd-AddressPlugin/proguard-project.txt | 20 +++ .../OsmAnd-AddressPlugin/project.properties | 14 ++ .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../res/drawable-hdpi/icon.png | Bin 0 -> 7000 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2729 bytes .../res/drawable-ldpi/icon.png | Bin 0 -> 2525 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../res/drawable-mdpi/icon.png | Bin 0 -> 3878 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../res/drawable-xhdpi/icon.png | Bin 0 -> 9824 bytes .../OsmAnd-AddressPlugin/res/layout/main.xml | 13 ++ .../res/values/strings.xml | 8 ++ .../AddressBookPluginActivity.java | 60 +++++++++ .../ContactAddressPluginActivity.java | 120 ++++++++++++++++++ 25 files changed, 355 insertions(+), 26 deletions(-) create mode 100644 plugins/OsmAnd-AddressPlugin/.classpath create mode 100644 plugins/OsmAnd-AddressPlugin/.gitignore create mode 100644 plugins/OsmAnd-AddressPlugin/.project create mode 100644 plugins/OsmAnd-AddressPlugin/AndroidManifest.xml create mode 100644 plugins/OsmAnd-AddressPlugin/proguard-project.txt create mode 100644 plugins/OsmAnd-AddressPlugin/project.properties create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-hdpi/ic_launcher.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-hdpi/icon.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-ldpi/ic_launcher.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-ldpi/icon.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-mdpi/ic_launcher.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-mdpi/icon.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-xhdpi/ic_launcher.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/drawable-xhdpi/icon.png create mode 100644 plugins/OsmAnd-AddressPlugin/res/layout/main.xml create mode 100644 plugins/OsmAnd-AddressPlugin/res/values/strings.xml create mode 100644 plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/AddressBookPluginActivity.java create mode 100644 plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/ContactAddressPluginActivity.java diff --git a/OsmAnd-java/src/net/osmand/router/TurnType.java b/OsmAnd-java/src/net/osmand/router/TurnType.java index 42b8b05674..a58f1cb82f 100644 --- a/OsmAnd-java/src/net/osmand/router/TurnType.java +++ b/OsmAnd-java/src/net/osmand/router/TurnType.java @@ -13,6 +13,10 @@ public class TurnType { public static final String TU = "TU"; // U-turn //$NON-NLS-1$ public static final String TRU = "TRU"; // Right U-turn //$NON-NLS-1$ public static String[] predefinedTypes = new String[] { C, KL, KR, TL, TSLL, TSHL, TR, TSLR, TSHR, TU, TRU }; + + public static TurnType sraight() { + return valueOf(C, false); + } public static TurnType valueOf(String s, boolean leftSide) { for (String v : predefinedTypes) { diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml index 62689561e5..a2cd46b5c1 100644 --- a/OsmAnd/AndroidManifest.xml +++ b/OsmAnd/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java b/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java index 78db195651..fe7211e84e 100644 --- a/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java @@ -283,27 +283,29 @@ public class GeoIntentActivity extends OsmandListActivity { for (RegionAddressRepository rar : countriesToSearch) { final TLongObjectHashMap cityIds = new TLongObjectHashMap(); for (String element : elements) { - rar.searchMapObjectsByName(element, new ResultMatcher() { - @Override - public boolean publish(MapObject object) { - if (object instanceof City && object.getId() != null) { - cityIds.put(object.getId(), (City) object); - } else if(object instanceof Street) { - City c = ((Street)object).getCity(); - if(c != null && c.getId() != null && cityIds.containsKey(c.getId().longValue())) { - connectedStreets.add((Street) object); - return false; + if (element != null && element.length() > 0) { + rar.searchMapObjectsByName(element, new ResultMatcher() { + @Override + public boolean publish(MapObject object) { + if (object instanceof City && object.getId() != null) { + cityIds.put(object.getId(), (City) object); + } else if (object instanceof Street) { + City c = ((Street) object).getCity(); + if (c != null && c.getId() != null && cityIds.containsKey(c.getId().longValue())) { + connectedStreets.add((Street) object); + return false; + } } + results.add(object); + return false; } - results.add(object); - return false; - } - @Override - public boolean isCancelled() { - return false; - } - }); + @Override + public boolean isCancelled() { + return false; + } + }); + } } } diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java index 290e241dfa..2da7f9274a 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteCalculationResult.java @@ -122,8 +122,7 @@ public class RouteCalculationResult { if (locationIndex > interLocations[currentIntermediate] && getDistanceToLocation(intermediates.get(currentIntermediate), locationIndex) > 50) { RouteDirectionInfo toSplit = localDirections.get(currentDirection); - RouteDirectionInfo info = new RouteDirectionInfo(localDirections.get(currentDirection).getAverageSpeed(), TurnType.valueOf(TurnType.C, - false)); + RouteDirectionInfo info = new RouteDirectionInfo(localDirections.get(currentDirection).getAverageSpeed(), TurnType.sraight()); info.setRef(toSplit.getRef()); info.setStreetName(toSplit.getStreetName()); info.setDestinationName(toSplit.getDestinationName()); @@ -268,7 +267,7 @@ public class RouteCalculationResult { int previousLocation = 0; int prevBearingLocation = 0; - RouteDirectionInfo previousInfo = new RouteDirectionInfo(speed, TurnType.valueOf(TurnType.C, leftSide)); + RouteDirectionInfo previousInfo = new RouteDirectionInfo(speed, TurnType.sraight()); previousInfo.routePointOffset = 0; previousInfo.setDescriptionRoute(ctx.getString( R.string.route_head)); computeDirections.add(previousInfo); @@ -512,7 +511,7 @@ public class RouteCalculationResult { i.routePointOffset++; } RouteDirectionInfo info = new RouteDirectionInfo(directions.get(0).getAverageSpeed(), - TurnType.valueOf(TurnType.C, false)); + TurnType.sraight()); info.routePointOffset = 0; // info.setDescriptionRoute(ctx.getString( R.string.route_head));//; //$NON-NLS-1$ directions.add(0, info); diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java index 2d77b587a3..f42be507de 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java @@ -530,7 +530,7 @@ public class RouteProvider { if (stype != null) { turnType = TurnType.valueOf(stype.toUpperCase(), leftSide); } else { - turnType = TurnType.valueOf(TurnType.C, leftSide); + turnType = TurnType.sraight(); } String sturn = item.getExtensionsToRead().get("turn-angle"); //$NON-NLS-1$ if (sturn != null) { diff --git a/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java b/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java index 90c9fda9c3..c12441d470 100644 --- a/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java +++ b/OsmAnd/src/net/osmand/plus/views/TurnPathHelper.java @@ -240,7 +240,7 @@ public class TurnPathHelper { paintRouteDirection.setStyle(Style.FILL_AND_STROKE); paintRouteDirection.setColor(resources.getColor(R.color.nav_arrow_distant)); paintRouteDirection.setAntiAlias(true); - TurnPathHelper.calcTurnPath(dp, TurnType.valueOf(TurnType.KL, false), null); + TurnPathHelper.calcTurnPath(dp, TurnType.sraight(), null); } @Override diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java index 15d68f1672..74dc0ab57e 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java @@ -52,7 +52,7 @@ public class RouteInfoWidgetsFactory { final OsmandSettings settings, Paint textPaint, Paint subtextPaint, boolean horisontalMini) { final NextTurnInfoWidget nextTurnInfo = new NextTurnInfoWidget(ctx, textPaint, subtextPaint, horisontalMini) { NextDirectionInfo calc1 = new NextDirectionInfo(); - TurnType straight = TurnType.valueOf(TurnType.C, true); + TurnType straight = TurnType.sraight(); @Override public boolean updateInfo(DrawSettings drawSettings) { @@ -502,7 +502,7 @@ public class RouteInfoWidgetsFactory { final Path laneStraight = new Path(); Matrix pathTransform = new Matrix(); pathTransform.postScale(scaleCoefficient / miniCoeff, scaleCoefficient / miniCoeff); - TurnPathHelper.calcTurnPath(laneStraight, TurnType.valueOf(TurnType.C, false), pathTransform); + TurnPathHelper.calcTurnPath(laneStraight, TurnType.sraight(), pathTransform); final Paint paintBlack = new Paint(); paintBlack.setStyle(Style.STROKE); paintBlack.setColor(Color.BLACK); diff --git a/plugins/OsmAnd-AddressPlugin/.classpath b/plugins/OsmAnd-AddressPlugin/.classpath new file mode 100644 index 0000000000..a4763d1eec --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/plugins/OsmAnd-AddressPlugin/.gitignore b/plugins/OsmAnd-AddressPlugin/.gitignore new file mode 100644 index 0000000000..36986d81cf --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/.gitignore @@ -0,0 +1,4 @@ +bin +gen +raw +obj diff --git a/plugins/OsmAnd-AddressPlugin/.project b/plugins/OsmAnd-AddressPlugin/.project new file mode 100644 index 0000000000..e8967665b4 --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/.project @@ -0,0 +1,33 @@ + + + OsmAnd-AddressPlugin + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/plugins/OsmAnd-AddressPlugin/AndroidManifest.xml b/plugins/OsmAnd-AddressPlugin/AndroidManifest.xml new file mode 100644 index 0000000000..4fc7ea3f17 --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/AndroidManifest.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/OsmAnd-AddressPlugin/proguard-project.txt b/plugins/OsmAnd-AddressPlugin/proguard-project.txt new file mode 100644 index 0000000000..f2fe1559a2 --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/plugins/OsmAnd-AddressPlugin/project.properties b/plugins/OsmAnd-AddressPlugin/project.properties new file mode 100644 index 0000000000..9b84a6b4bf --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-16 diff --git a/plugins/OsmAnd-AddressPlugin/res/drawable-hdpi/ic_launcher.png b/plugins/OsmAnd-AddressPlugin/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..96a442e5b8e9394ccf50bab9988cb2316026245d GIT binary patch literal 9397 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 literal 0 HcmV?d00001 diff --git a/plugins/OsmAnd-AddressPlugin/res/drawable-ldpi/icon.png b/plugins/OsmAnd-AddressPlugin/res/drawable-ldpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4d16e761bf08aa45cd92da79bf68eb8d5359f442 GIT binary patch literal 2525 zcmV<32_p81P)W_ zZB-sxSBj!msk$IVZAfq`AT?kxCJe^$&fsP2*_XTZKj+RJ&%oeBs7LyB?>)Ndu(hBD=RDT`~ApdGKk0H?pQ4L7b+Sg6KfeV(X;$SIMe5W z(H{emW*P?#WGzi|Q>v>nZ+sCSPJa*ie7>6Ja=CEo)G65QcK*%E-hcmn&YqrF+3T;r zj&L{(lgVT@RPt?Xz8hIC{zu>o0@EG>GURA}8OW8iaICShwLzrQX%@6qJAV9l6^!2b zv17;T>aaGWqoc@XvmA#$WhPPNjN#MaUu*=RF^v~}e;_acnwk`lEj*FL+sn-m#Y|lu zO~+&PqR}YyzVvkW?p+)@bco}q#!$Je&6q4J*w%lLo@GRnzlPaERr170>Iq;f>w~e$ zroT3^k?-5LuP$$5VuCYMn^;@D|0*CIwL}4FwmZ=p2_Z1@U&2fQ{BXS?mV#u$_2f3p znGRPS)}{|W_<%qA`}_HGe0-ee=|Nwc^!^(FQjmH$hv33Fno%n)mE7as!Jw08GsRs`pV0d^KYiny8nnJpy z_iv~L#EdZ{Niyt(1*m1BhOzsIjiq|A^V>gx#~(x{nc($-OrgbXRu?(4z9|3 z_Uz%t-dP?i)9bM|kw|2dDU&pYxJ+e54Md$@Q&#K;Fe^pOT>m%1z0dHrJsqpK_c^iZ z_VN+G{r1~mtF}zZQ^{ov47|E|44K3gsAdY4qQc{+Zf7wHaGDg%#7Ft(-1rE>+Ycg? zUPEt30;BOoxZNHma+`u-{iV|>#Qa9C=9|V)T6R%P5SF3@gITLp#bh%hm6(BK*rE*} zoy6?eMJTd_9bFL^tO9OKEFdije7`cA&2>Q7YGg`nSCiPYb03=RQk^a}WJsiGQ`v$^ zYdZyBWyT69n+4(A1RfYVHbyIPl|^%hhuHEW(Bj11dkL(}Ok-iW9#ESlhdx^p2evH3 zcJv+Gy!heffE>;3T)5&TKem;UJcbN%r6yy_Vn$3E!=$ncYY0^x`64cuoJRgWFc3qx zI|qv`j+G`G)Q4H9Q4Bf>Ex36#Ih2{VBaMNNTSg+=Vm{~eA40@NfaxHSibic~U%x=}5_ z=Y|-8NpT@=2uN4j#PpYlY#BhxeH4QK3n+KAr7loSl?X7*=lD6u8_y=AAJ>g0W&I0YWbwMI2@bbTmY!sObU4o9d$A^E;rDWTW6T-T^PIkG5UvI;b2JVgH5$+$yHd+V6{98zp)j$=uZjQ7>wfu2!#q5 zswR}E=W9z4LL~oT7ldv|AaG~@PI(xQYHv1*o#2A%{b*F@efC}YxupO)@q~Y&5hD*2B@oe8Pio5X?50p(Gw zG~kR;qj1=YV9Trc_?jQREgz%1Wef_PWK{|kWk~~9O%&6H7BUK6f#QBN7saQ^K1BEQ zp}Eak=bNQWdF^W$k_&v=^b|C-BjmSPq}jQ=72=0NGxd$Ta4`(jO~TPW8`br<+R|1 z=LWI5qYIZm=|OyH6`k@wu(#zZUY*fVhYSe1=4a49b#yO_t$t)1NN-L*gxZa`h6?O>Z3a^wV_ z+unyzPYiZn7*0D0LO#Z>$jd>z}7%h2_C#*1lj45{J}WaT<<-^DJU4SqHR=)%Ug zj$0Rhg@JDkY5|u?Yja(YaR0^}$-i2;fj%A&ld}o*?br^h!>f(dY@zAaP6Jk_7oJcj zL}EuFlD+;&!$X_f?G8T1kkeri2I*<-rB1Y4h1KEVoz%WR{|$Z+ z*r;yJ=^{t>vHSWr-T5ywIemRj&NK(49+_ zyhl5(eb?Jnc0b;}tTW_h*KRUT1BZ_~7i*kJHBOb9KVr2V)#fWTU>g5~(tpQj`!P&4 nP9AlrHYk%fbN)2xe*z2uO4UHg#Bs$~00000NkvXXu0mjfMTp6M literal 0 HcmV?d00001 diff --git a/plugins/OsmAnd-AddressPlugin/res/drawable-mdpi/ic_launcher.png b/plugins/OsmAnd-AddressPlugin/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..359047dfa4ed206e41e2354f9c6b307e713efe32 GIT binary patch literal 5237 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 literal 0 HcmV?d00001 diff --git a/plugins/OsmAnd-AddressPlugin/res/drawable-mdpi/icon.png b/plugins/OsmAnd-AddressPlugin/res/drawable-mdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..60455f8c8f0a3ccf779e0c516dc5d88d67c6f053 GIT binary patch literal 3878 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 literal 0 HcmV?d00001 diff --git a/plugins/OsmAnd-AddressPlugin/res/drawable-xhdpi/icon.png b/plugins/OsmAnd-AddressPlugin/res/drawable-xhdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0621e68174da193ab5c3c76cd62e6e9f8f3b62 GIT binary patch literal 9824 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 + + + + + \ No newline at end of file diff --git a/plugins/OsmAnd-AddressPlugin/res/values/strings.xml b/plugins/OsmAnd-AddressPlugin/res/values/strings.xml new file mode 100644 index 0000000000..7f24413cd7 --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/res/values/strings.xml @@ -0,0 +1,8 @@ + + + No + Yes + OsmAnd is not installed + OsmAnd Adress Book Plugin + OsmAnd Adress Book Plugin is installed. + \ No newline at end of file diff --git a/plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/AddressBookPluginActivity.java b/plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/AddressBookPluginActivity.java new file mode 100644 index 0000000000..01b79ccf16 --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/AddressBookPluginActivity.java @@ -0,0 +1,60 @@ +package net.osmand.addressPlugin; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.ComponentName; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.os.Bundle; + +public class AddressBookPluginActivity extends Activity { + private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$ + private static final String OSMAND_COMPONENT_PLUS = "net.osmand.plus"; //$NON-NLS-1$ + private static final String OSMAND_ACTIVITY = "net.osmand.plus.activities.MainMenuActivity"; //$NON-NLS-1$ + + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + Intent intentPlus = new Intent(); + intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY)); + intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY); + if(resolved != null) { + stopService(intentPlus); + startActivity(intentPlus); + } else { + Intent intentNormal = new Intent(); + intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY)); + resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY); + if (resolved != null) { + stopService(intentNormal); + startActivity(intentNormal); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(getString(R.string.osmand_app_not_found)); + builder.setPositiveButton(getString(R.string.default_buttons_yes), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + OSMAND_COMPONENT_PLUS)); + try { + stopService(intent); + startActivity(intent); + } catch (ActivityNotFoundException e) { + } + } + }); + builder.setNegativeButton(getString(R.string.default_buttons_no), null); + builder.show(); + } + } + } + +} \ No newline at end of file diff --git a/plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/ContactAddressPluginActivity.java b/plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/ContactAddressPluginActivity.java new file mode 100644 index 0000000000..e020f5b25b --- /dev/null +++ b/plugins/OsmAnd-AddressPlugin/src/net/osmand/addressPlugin/ContactAddressPluginActivity.java @@ -0,0 +1,120 @@ +package net.osmand.addressPlugin; + +import java.util.StringTokenizer; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.ComponentName; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.provider.ContactsContract; + +public class ContactAddressPluginActivity extends Activity { + private static final String OSMAND_COMPONENT = "net.osmand"; //$NON-NLS-1$ + private static final String OSMAND_COMPONENT_PLUS = "net.osmand.plus"; //$NON-NLS-1$ + private static final String OSMAND_ACTIVITY = "net.osmand.plus.activities.search.GeoIntentActivity"; //$NON-NLS-1$ + private static final int CONTACT_PICKER_RESULT = 1001; + //content://com.android.contacts/data/5 + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final Intent intent = getIntent(); + if (intent != null) { + + Cursor cur=getContentResolver().query(intent.getData(),null,null,null,null); + if (cur.moveToFirst() == false) + { + //no rows empty cursor + return; + } + + final String street = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS)); + StringTokenizer token=new StringTokenizer(street, ","); + boolean latlong=false; + String latitude=null; + String longitude=null; + if(token.countTokens()==2){ + String temp=token.nextToken(); + if(temp.startsWith("loc:")){ + temp=temp.substring(4); + } + if (temp.trim().matches("((-|\\+)?[0-9]+(\\.[0-9]+)?)+")) { + latitude=temp.trim(); + } + temp=token.nextToken(); + if(temp.trim().matches("((-|\\+)?[0-9]+(\\.[0-9]+)?)+")){ + longitude= temp.trim(); + } + if(latitude!=null && longitude!=null){ + latlong=true; + } + } + String data="geo:"; + if(latlong){ + data=data+latitude+","+longitude; + }else{ + data=data+"0,0?q="+street; + } + + //The cursor is already positioned at the begining of the cursor + //let's access a few columns + + //let's now see how we can loop through a cursor + startOSMAND(intent, data); + /*while(cur.moveToNext()) + { + //cursor moved successfully + //access fields + }*/ + + } + finish(); + } + + + public void startOSMAND(Intent original,String data){ + Intent intentPlus = new Intent(); + intentPlus.setComponent(new ComponentName(OSMAND_COMPONENT_PLUS, OSMAND_ACTIVITY)); + intentPlus.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + intentPlus.setData(Uri.parse(data)); + intentPlus.setAction(original.getAction()); + ResolveInfo resolved = getPackageManager().resolveActivity(intentPlus, PackageManager.MATCH_DEFAULT_ONLY); + if(resolved != null) { + stopService(intentPlus); + startActivity(intentPlus); + } else { + Intent intentNormal = new Intent(); + intentNormal.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + intentNormal.setData(original.getData()); + intentNormal.setComponent(new ComponentName(OSMAND_COMPONENT, OSMAND_ACTIVITY)); + resolved = getPackageManager().resolveActivity(intentNormal, PackageManager.MATCH_DEFAULT_ONLY); + if (resolved != null) { + stopService(intentNormal); + startActivity(intentNormal); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(getString(R.string.osmand_app_not_found)); + builder.setPositiveButton(getString(R.string.default_buttons_yes), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + OSMAND_COMPONENT_PLUS)); + try { + stopService(intent); + startActivity(intent); + } catch (ActivityNotFoundException e) { + } + } + }); + builder.setNegativeButton(getString(R.string.default_buttons_no), null); + builder.show(); + } + } + + } +} \ No newline at end of file