#flutter #flutter-layout #flutter-dependencies
Вопрос:
это может быть вызов значка мака с помощью INKWILL
_Call() async {
const _url = 'tel:01140654053' ;
if (await canLaunch(_url)) {
await launch(_url);
} else {
throw 'could not lanch ';
}
}
и эта ошибка
E/flutter ( 8522): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: could not lanch
E/flutter ( 8522): #0 _MyHomePageState._Call (package:oonco_helpp/main.dart:105:7)
E/flutter ( 8522): <asynchronous suspension>
E/flutter ( 8522):
Ответ №1:
В Android 11 была введена более строгая защита при взаимодействии с другими приложениями, концепция видимости пакетов. Это причина canLaunch
, по которой всегда возвращает false на Android 11 (API 30) и launchUrl
завершается ошибкой при использовании пакета url_launcher.
Из этого блога они представили решение для этого:
Это можно исправить, настроив ваше приложение для создания других приложений, в которых
android.intent.action.VIEW
используется<queries>
элемент фильтра намеренийAndroidManifest.xml
.Чтобы
<queries>
элемент работал, рекомендуется обновить плагин Android Gradle (AGP) до версии 4.1. В файле gradle уровня проектаandroid/build.gradle
выполните следующие действия, как показано ниже:buildscript { repositories { google() jcenter() } dependencies { // Using gradle plugin version 4.1.1 classpath 'com.android.tools.build:gradle:4.1.1' } }
Существуют другие версии dot для более ранних версий Android
Плагины Gradle. Узнайте больше
здесь.После обновления плагина gradle и создания приложения добавьте этот блок элементов в свой
AndroidManifest.xml
:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sample"> <uses-permission android:name="android.permission.INTERNET"/> <!-- Add the block below to your manifest file to configure apps with action.VIEW intent filters as visible to your app --> <!-- START HERE --> <queries> <intent> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> </intent> </queries> <!-- END HERE --> <application> ... </application> </manifest>
После этого перестройте приложение и
canLaunch
вернитесьtrue
, аlaunchUrl
также откройте URL-адрес на Android 11 (API 30).