package de.robv.android.xposed.installer.util; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.provider.Browser; import android.support.annotation.NonNull; import android.support.customtabs.CustomTabsIntent; import android.text.Spannable; import android.text.SpannableString; import android.text.style.URLSpan; import android.text.util.Linkify; import com.afollestad.materialdialogs.MaterialDialog; import de.robv.android.xposed.installer.R; import de.robv.android.xposed.installer.XposedApp; public final class NavUtil { public static Uri parseURL(String str) { if (str == null || str.isEmpty()) return null; Spannable spannable = new SpannableString(str); Linkify.addLinks(spannable, Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES); URLSpan spans[] = spannable.getSpans(0, spannable.length(), URLSpan.class); return (spans.length > 0) ? Uri.parse(spans[0].getURL()) : null; } public static void startURL(Activity activity, Uri uri) { if (!XposedApp.getPreferences().getBoolean("chrome_tabs", true)) { Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.putExtra(Browser.EXTRA_APPLICATION_ID, activity.getPackageName()); activity.startActivity(intent); return; } CustomTabsIntent.Builder customTabsIntent = new CustomTabsIntent.Builder(); customTabsIntent.setShowTitle(true); customTabsIntent.setToolbarColor(activity.getResources().getColor(R.color.colorPrimary)); customTabsIntent.build().launchUrl(activity, uri); } public static void startURL(Activity activity, String url) { startURL(activity, parseURL(url)); } public static void showMessage(@NonNull Context context, CharSequence message) { new MaterialDialog.Builder(context) .content(message) .positiveText(android.R.string.ok) .show(); } }