Home > Back-end >  required to specify an explicit value for `android:exported` in the Debug/androidMenifest.xml for fl
required to specify an explicit value for `android:exported` in the Debug/androidMenifest.xml for fl

Time:05-25

The error shows that I need to add android:exported in the debug/androidMenifest.xml . But there is no activity defined the file . so I am not sure what can I do . I tried changing the compileSDK version in the build.gradle but that also didnt to anything .

here is the error

Console:

C:\Users\vinay\AndroidStudioProjects\fc-ui\android\app\src\debug\AndroidManifest.xml:15:9-22:20 Error:
    android:exported needs to be explicitly specified for element <receiver#com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : android:exported needs to be explicitly specified for element <receiver#com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s
Exception: Gradle task assembleDebug failed with exit code 1

my app/androidMenifest.xml file:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.firstcotton.k">
        <queries>
            <!-- If your app opens https URLs -->
            <intent>
                <action android:name="android.intent.action.VIEW" />
                <data android:scheme="https" />
            </intent>
            <!-- If your app makes calls -->
            <intent>
                <action android:name="android.intent.action.DIAL" />
                <data android:scheme="tel" />
            </intent>
            <!-- If your sends SMS messages -->
            <intent>
                <action android:name="android.intent.action.SENDTO" />
                <data android:scheme="smsto" />
            </intent>
            <!-- If your app sends emails -->
            <intent>
                <action android:name="android.intent.action.SEND" />
                <data android:mimeType="*/*" />
            </intent>
        </queries>
       <application
            android:label="First Cotton"
            android:name="${applicationName}"
            android:icon="@mipmap/launcher_icon">
            <activity
                android:name=".MainActivity"
                android:exported="false"
                android:launchMode="singleTop"
                android:theme="@style/LaunchTheme"
                android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
                android:hardwareAccelerated="true"
                android:windowSoftInputMode="adjustResize">
                <!-- Specifies an Android theme to apply to this Activity as soon as
                     the Android process has started. This theme is visible to the user
                     while the Flutter UI initializes. After that, this theme continues
                     to determine the Window background behind the Flutter UI. -->
                <meta-data
                  android:name="io.flutter.embedding.android.NormalTheme"
                  android:resource="@style/NormalTheme"
                  />
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
            <!-- Don't delete the meta-data below.
                 This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
            <meta-data
                android:name="flutterEmbedding"
                android:value="2" />
        </application>
    </manifest>

my debug/androidMenifest.xml file:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.firstcotton.k">
        <!-- Flutter needs it to communicate with the running application
             to allow setting breakpoints, to provide hot reload, etc.
        -->
        <uses-permission android:name="android.permission.INTERNET"/>
    </manifest>

Can you help me? How can I fix this problem?

Thank you so much.

after adding the file this is the new error -

Exception occurred while executing 'start':
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.RUN flg=0x30000000 cmp=com.firstcotton.k/.MainActivity (has extras) } from null (pid=31748, uid=2000) not exported from uid 10381
    at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1334)
    at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1281)
    at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:890)
    at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1872)
    at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1743)
    at com.android.server.am.ActivityManagerService.startActivityAsUserWithFeature(ActivityManagerService.java:3543)
    at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:596)
    at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:201)
    at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
    at android.os.ShellCommand.exec(ShellCommand.java:38)
    at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10487)
    at android.os.Binder.shellCommand(Binder.java:986)
    at android.os.Binder.onTransact(Binder.java:860)
    at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:6049)
    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3034)
    at android.os.Binder.execTransactInternal(Binder.java:1220)
    at android.os.Binder.execTransact(Binder.java:1179)
  Command: C:/Users/vinay/AppData/Local/Android/Sdk\platform-tools\adb.exe -s RZCT105Z0WN shell am start -a android.intent.action.RUN -f 0x20000000 --ez enable-dart-profiling true --ez enable-checked-mode true --ez verify-entry-points true --ez start-paused true com.firstcotton.k/com.firstcotton.k.MainActivity

CodePudding user response:

I hope this helps you.

In the AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<application
            ...>
            <activity
                ...
                android:exported="true">
                ...
            </activity>
            <receiver
              android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
              android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                </intent-filter>
    </receiver>
</application>

CodePudding user response:

It's a requirement because an intent-filter is declared for your activity. So simply do this:

android:exported="true" >
  <intent-filter>
     ...
  </intent-filter>

Add that before any intent-filter declaration and you're good to go.

  • Related