Не удалось запустить Chrome CustomTabsIntent в моем приложении для Android

Я пытаюсь использовать пользовательские вкладки Chrome в своем приложении для Android. Мой класс MainActivity расширяет класс AppCompatActivity. В onCreate я вызываю startCustomTabs. Ниже приведен код для этого:

private void startCustomTab(){
    CustomTabsIntent intent = new CustomTabsIntent.Builder().setToolbarColor(getResources().getColor(R.color.colorPrimary)).build();
    intent.launchUrl(this, Uri.parse("http://github.com/black-dragon/SaavnExtractor"));
}

Как только приложение запускается, оно вылетает со следующей ошибкой:

11-16 10:55:38.561 30093-30093/com.nick.saavnextractor
E/AndroidRuntime: FATAL EXCEPTION: main
   Process: com.nick.saavnextractor, PID: 30093
   java.lang.NoSuchMethodError: No static method
startActivity(Landroid/app/Activity;Landroid/content/Intent;Landroid/os/Bundle;)V
in class Landroid/support/v4/app/ActivityCompat; or its super classes
(declaration of 'android.support.v4.app.ActivityCompat' appears in
/data/data/com.nick.saavnextractor/files/instant-run/dex/slice-com.android.support-support-compat-25.0.0_15c83dd4ec129d2d74bfda2e34f6aeeb93d83fa1-classes.dex)
       at android.support.customtabs.CustomTabsIntent.launchUrl(CustomTabsIntent.java:262)
       at com.nick.saavnextractor.MainActivity.startCustomTab(MainActivity.java:325)
       at com.nick.saavnextractor.MainActivity.onCreate(MainActivity.java:111)
       at android.app.Activity.performCreate(Activity.java:6311)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2539)
       at android.app.ActivityThread.access$900(ActivityThread.java:159)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5507)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Примечание. Если я выполняю тот же код с теми же методами в новом приложении, пользовательские вкладки запускаются нормально.


person Nick    schedule 16.11.2016    source источник
comment
Какую версию инструментов сборки вы используете?   -  person jdandradex    schedule 17.11.2016


Ответы (3)


Итак, вот разрешение. Я использовал инструменты сборки версии 25.0.0, но моя платформа SDK была 24.

Обновите инструменты сборки, инструменты платформы и SDK до той же версии, и тогда вы не столкнетесь с этой проблемой.

person Nick    schedule 19.11.2016
comment
Нашел решение моей проблемы. Мне нужно было убедиться, что импортирована зависимость, соответствующая версии SDK, с которой я компилирую. Руководство по внедрению веб-сайта Customtabs имеет версию 23.3.0 зависимости. Мне пришлось изменить это на 25.0.1 - person Gonzalo; 23.11.2016
comment
В Gradle даже есть предупреждение о несовместимости версий, не могу поверить, что пропустил это. - person Allison; 07.05.2017

Наряду с ответом @Nick мне также пришлось обновить версию SDK Facebook, и сбой прекратился.

person Saket    schedule 31.01.2017
comment
Это было для меня. Использовал 4.16.1, но обновился до 4.20.0 и заработал. - person mco; 15.03.2017

Вам нужно добавить зависимость Customtabs в файл build.gradle.

implementation 'com.android.support:customtabs:28.0.0'
person Sajid Zeb    schedule 23.11.2020