Как переключаться между настраиваемой вкладкой Chrome и веб-просмотром в Android?

Я реализовал как пользовательскую вкладку Chrome, так и веб-просмотр для веб-сайта в студии Android. Они оба работают нормально. Теперь я хочу, чтобы, если у пользователя не установлен хром или его версия хрома меньше 45 (минимальная версия, необходимая для настраиваемой вкладки хрома), затем откройте класс веб-просмотра. Как проверить версию хрома или установлен хром или нет? Вот фрагмент кода, чтобы открыть пользовательскую вкладку Chrome по умолчанию


person Yash Sharan    schedule 03.07.2016    source источник


Ответы (3)


Вы должны попытаться привязаться к службе, и если это не удастся, вы можете вернуться к веб-просмотру. Вы можете увидеть это здесь: https://github.com/GoogleChrome/custom-tabs-client/blob/cc6b8b9169ed7e70484bbdbbf39b672d1c4b3c80/Application/src/main/java/org/chromium/customtabsclient/MainActivity.java#L147.

person ade    schedule 03.07.2016

взято из https://github.com/GoogleChrome/custom-tabs-client/blob/master/demos/src/main/java/org/chromium/customtabsdemos/CustomTabActivityHelper.java:

public void bindCustomTabsService(Activity activity) {
    if (mClient != null) return;

    String packageName = CustomTabsHelper.getPackageNameToUse(activity);
    if (packageName == null) return;

    mConnection = new ServiceConnection(this);
    CustomTabsClient.bindCustomTabsService(activity, packageName, mConnection);
}

вы можете проверить, является ли "packageName" нулевым

person gutte    schedule 04.07.2016

Я использовал следующий код для своей цели, чтобы проверить версию Chrome, установлен ли Chrome или нет. Надеюсь поможет, надо попробовать.

String chromePackageName = "com.android.chrome";
int chromeTargetVersion  = 45;

boolean isSupportCustomTab = false;

try {
    PackageManager pm = getApplicationContext().getPackageManager();
    List<PackageInfo> list = pm.getInstalledPackages(PackageManager.MATCH_DEFAULT_ONLY);
    if (list != null && 0 < list.size()) {
        for (PackageInfo info : list) {
            if (chromePackageName.equals(info.packageName)) {

                String chromeVersion = pm.getPackageInfo(chromePackageName, 0).versionName;
                if(chromeVersion.contains(".")) {
                    chromeVersion = chromeVersion.substring(0, chromeVersion.indexOf('.'));
                }
                isSupportCustomTab = (Integer.valueOf(chromeVersion) >= chromeTargetVersion);

                break;
            }
        }
    }
} catch (Exception ex) {}

if (isSupportCustomTab) {
    //Use Chrome Custom Tab
} else {
    //Use WebView
}
person mdrafiqulrabin    schedule 18.02.2017