Ошибка сборки Flutter для Android: android.permission.POST_NOTIFICATIONS [MissingPermission] NotificationManager.notify(Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка сборки Flutter для Android: android.permission.POST_NOTIFICATIONS [MissingPermission] NotificationManager.notify(

Сообщение Anonymous »

Я создаю приложение Flutter для Android, использующее Geolocator, и обнаружил следующую ошибку при запуске «./gradlew clean build»:

Код: Выделить всё

int found 1 errors, 6 warnings.  First failure:  /home/daksh/.pub-cache/
hosted/pub.dev/geolocator_android-4.6.0/android/src/main/java/com/
baseflow/geolocator/location/BackgroundNotification.java:100: Error:
Missing permissions required by NotificationManagerCompat.notify:
android.permission.POST_NOTIFICATIONS [MissingPermission]
notificationManager.notify(notificationId, builder.build());
pubspec.yaml:

Код: Выделить всё

name: frontend
description: "A new Flutter project."
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1

environment:
sdk: ^3.0.0

dependencies:
flutter:
sdk: flutter
geolocator: ^12.0.0
http: ^0.13.6
shared_preferences: ^2.0.6
#  workmanager: ^0.5.2

dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0
flutter:
uses-material-design: true
Build.gradle на уровне проекта:

Код: Выделить всё

buildscript {
ext.kotlin_version = '2.0.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.android.support:multidex:1.0.3'
}
}

allprojects {
repositories {
google()
mavenCentral()
}
}
Build.gradle на уровне приложения:

Код: Выделить всё

plugins {
id "com.android.application"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader("UTF-8") { reader ->
localProperties.load(reader)
}
}

def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {
flutterVersionCode = "1"
}

def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {
flutterVersionName = "1.0"
}

android {
namespace = "com.example.test_app"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion

compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.example.test_app"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdk = 19
targetSdk = 34
compileSdkVersion = 34
versionCode = flutterVersionCode.toInteger()
versionName = flutterVersionName
}

buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.debug
}
}
}

flutter {
source = "../.."
}
AndroidManifest.xml: Kotlin MainActivity.kt:

Код: Выделить всё

package com.example.test_app

import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import androidx.core.app.ActivityCompat
import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
private val PERMISSION_REQUEST_CODE = 123

override fun onResume() {
super.onResume()
requestNotificationPermission()
}

private fun requestNotificationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), PERMISSION_REQUEST_CODE)
}
}
}
}
Я испробовал все возможные решения этой ошибки, но ни одно из них не помогло. Использование Android SDK Upside Down Cake и Flutter версии 3.22.2.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ssingpermi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»