diff options
author | Dmitry Donskoy <donskdmitry@mail.ru> | 2018-11-12 13:03:48 +0300 |
---|---|---|
committer | Aleksandr Zatsepin <alexzatsepin@users.noreply.github.com> | 2018-11-12 13:12:50 +0300 |
commit | 7d1ef8a82f7e5566b2faafe75ead086c2bd55e9f (patch) | |
tree | 9c28f062a6d7c6aea79d3c32ad2541c5d2733bee | |
parent | c95a4f781d053ff985a93e344a1429213968b3d2 (diff) |
[android] Fixed FLAG_ACTIVITY_NEW_TASK runtime exception after startActivityios-store-848android-gr-849release-84
4 files changed, 29 insertions, 16 deletions
diff --git a/android/src/com/mapswithme/maps/search/PromoCategory.java b/android/src/com/mapswithme/maps/search/PromoCategory.java index 287b3a88e9..bbc7963735 100644 --- a/android/src/com/mapswithme/maps/search/PromoCategory.java +++ b/android/src/com/mapswithme/maps/search/PromoCategory.java @@ -1,6 +1,6 @@ package com.mapswithme.maps.search; -import android.content.Context; +import android.app.Activity; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; @@ -43,9 +43,9 @@ public enum PromoCategory @NonNull @Override - PromoCategoryProcessor createProcessor(@NonNull Context context) + PromoCategoryProcessor createProcessor(@NonNull Activity activity) { - return new RutaxiPromoProcessor(context); + return new RutaxiPromoProcessor(activity); } @Override @@ -69,7 +69,7 @@ public enum PromoCategory abstract boolean isSupported(); @NonNull - abstract PromoCategoryProcessor createProcessor(@NonNull Context context); + abstract PromoCategoryProcessor createProcessor(@NonNull Activity activity); @Nullable static PromoCategory findByStringId(@StringRes int nameId) diff --git a/android/src/com/mapswithme/maps/search/RutaxiPromoProcessor.java b/android/src/com/mapswithme/maps/search/RutaxiPromoProcessor.java index 194e5bbdc4..277de54763 100644 --- a/android/src/com/mapswithme/maps/search/RutaxiPromoProcessor.java +++ b/android/src/com/mapswithme/maps/search/RutaxiPromoProcessor.java @@ -1,6 +1,6 @@ package com.mapswithme.maps.search; -import android.content.Context; +import android.app.Activity; import android.support.annotation.NonNull; import com.mapswithme.util.Utils; @@ -8,16 +8,16 @@ import com.mapswithme.util.Utils; public class RutaxiPromoProcessor implements PromoCategoryProcessor { @NonNull - private final Context mContext; + private final Activity mActivity; - RutaxiPromoProcessor(@NonNull Context context) + RutaxiPromoProcessor(@NonNull Activity activity) { - mContext = context; + mActivity = activity; } @Override public void process() { - Utils.openUrl(mContext, "https://go.onelink.me/2944814706/86db6339"); + Utils.openUrl(mActivity, "https://go.onelink.me/2944814706/86db6339"); } } diff --git a/android/src/com/mapswithme/maps/search/SearchCategoriesFragment.java b/android/src/com/mapswithme/maps/search/SearchCategoriesFragment.java index 6696417d6d..648cfc78ed 100644 --- a/android/src/com/mapswithme/maps/search/SearchCategoriesFragment.java +++ b/android/src/com/mapswithme/maps/search/SearchCategoriesFragment.java @@ -50,7 +50,7 @@ public class SearchCategoriesFragment extends BaseMwmRecyclerFragment<Categories @Override public void onPromoCategorySelected(@NonNull PromoCategory promo) { - PromoCategoryProcessor processor = promo.createProcessor(getContext().getApplicationContext()); + PromoCategoryProcessor processor = promo.createProcessor(getActivity()); processor.process(); } diff --git a/android/src/com/mapswithme/util/Utils.java b/android/src/com/mapswithme/util/Utils.java index 20b93461ad..8c41f3e415 100644 --- a/android/src/com/mapswithme/util/Utils.java +++ b/android/src/com/mapswithme/util/Utils.java @@ -26,6 +26,7 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.text.style.AbsoluteSizeSpan; +import android.util.AndroidRuntimeException; import android.view.View; import android.view.Window; import android.widget.Toast; @@ -216,23 +217,35 @@ public class Utils activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(Constants.Url.TWITTER_MAPSME_HTTP))); } - public static void openUrl(@NonNull Context activity, @Nullable String url) + public static void openUrl(@NonNull Context context, @Nullable String url) { if (TextUtils.isEmpty(url)) return; + final Intent intent = new Intent(Intent.ACTION_VIEW); + Uri uri = isHttpOrHttpsScheme(url) + ? Uri.parse(url) + : new Uri.Builder().scheme("http").appendEncodedPath(url).build(); + intent.setData(uri); try { - final Intent intent = new Intent(Intent.ACTION_VIEW); - if (!url.startsWith("http://") && !url.startsWith("https://")) - url = "http://" + url; - intent.setData(Uri.parse(url)); - activity.startActivity(intent); + context.startActivity(intent); } catch (ActivityNotFoundException e) { CrashlyticsUtils.logException(e); } + catch (AndroidRuntimeException e) + { + CrashlyticsUtils.logException(e); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + } + } + + private static boolean isHttpOrHttpsScheme(@NonNull String url) + { + return url.startsWith("http://") || url.startsWith("https://"); } @NonNull |