Использование пользовательских вкладок Chrome для внешних URL - PullRequest
0 голосов
/ 22 октября 2018

Я использую шаблон из github: https://github.com/mgks/Android-SmartWebView

На самом деле это приложение имеет возможность открывать URL-адреса, отличные от URL-адреса веб-просмотра, в браузере по умолчанию.Теперь я хочу открыть их в пользовательских вкладках Chrome.

Шаг 1: Я включил его в переменных.статический логический ASWP_EXTURL = true;// открыть внешний URL-адрес в браузере по умолчанию вместо веб-просмотра приложения

Шаг 2. Добавлены зависимости.

dependencies {
...
implementation 'com.android.support:customtabs:28.0.0'
}

Шаг 3. Добавлен код в MainActivity.java (см. строку 455).

//Opening external URLs in android default web browser
        } else if (ASWP_EXTURL && !aswm_host(url).equals(ASWV_HOST)) {
            //aswm_view(url,true);
Uri uri = Uri.parse(url);

// create an intent builder
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();

// Begin customizing
// set toolbar colors
intentBuilder.setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary));
intentBuilder.setSecondaryToolbarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));

// set start and exit animations
intentBuilder.setStartAnimations(this, R.anim.slide_in_right, R.anim.slide_out_left);
intentBuilder.setExitAnimations(this, android.R.anim.slide_in_left,
        android.R.anim.slide_out_right);

// build custom tabs intent
CustomTabsIntent customTabsIntent = intentBuilder.build();

// launch the url
customTabsIntent.launchUrl(activity, uri);

        } else {
            a = false;
        }
        return a;
    }

Шаг 3;Скомпилировано и запущено в эмуляторе.Приложение открывает URL-адреса веб-просмотра как обычно.Но при нажатии на внешние URL он зависает и останавливается.

Кто-нибудь, пожалуйста, направьте меня.

Кроме того, я нашел ошибку.При первой загрузке некоторые из моих мобильных меню не отображаются правильно.Но после второго щелчка (при открытии другой страницы) он исправляется.

Ссылки: Мой вопрос в Github: https://github.com/mgks/Android-SmartWebView/issues/57 https://segunfamisa.com/posts/chrome-custom-tabs Если кто-то обнаружит ошибки в моем вопросе, пожалуйста, исправьтеэто.

1 Ответ

0 голосов
/ 21 июля 2019

Поскольку вы уже добавили зависимость от пользовательских таблиц, вы можете добавить ее в aswm_view() внутри if(tab){... условия:

   CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(); 
   intentBuilder.setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary));
   intentBuilder.setSecondaryToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary)); // better if you replace this with a darker shade
   intentBuilder.setStartAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
   intentBuilder.setExitAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
   CustomTabsIntent customTabsIntent = intentBuilder.build();
   try {
      customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));
   } catch (ActivityNotFoundException e) {
      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.setData(Uri.parse(url));
      startActivity(intent);
   }

После исправления ошибок зависимости (если они есть), я думаю, что все будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...