Cargó un APK o Android App Bundle que tiene una actividad, un alias de actividad, un servicio o un receptor de transmisión con filtro de intención, pero sin el ‘an

8 minutos de lectura

avatar de usuario
syed waleed

Tema : Cargó un APK o Android App Bundle que tiene una actividad, un alias de actividad, un servicio o un receptor de transmisión con filtro de intenciones, pero sin el conjunto de propiedades ‘android: exportado’. Este archivo no se puede instalar en Android 12 o superior. Consulte: developer.android.com/about/versions/12/behavior-changes-12#exported

Mi archivo AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.c4life.guardianangel">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>


<application
   tools:replace="android:label"
   android:label="GA"
   android:exported="true"
   android:icon="@mipmap/ic_launcher">
   <meta-data android:name="com.google.android.geo.API_KEY"
       android:value="[insert API key here]"/>
    <activity
        android:name=".MainActivity"
        android:exported="true"
        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">
        <meta-data
          android:name="io.flutter.embedding.android.NormalTheme"
          android:resource="@style/NormalTheme"
          />
        <meta-data
          android:name="io.flutter.embedding.android.SplashScreenDrawable"
          android:resource="@drawable/launch_background"
          />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
   <service android:name="changjoopark.com.flutter_foreground_plugin.FlutterForegroundService" android:exported="false"/>
    <meta-data
        android:name="flutterEmbedding"
        android:value="2" />


</application>

<uses-sdk
    android:targetSdkVersion="30"
    tools:overrideLibrary="changjoopark.com.flutter_foreground_plugin" />

avatar de usuario
manish

De acuerdo con la nueva política de Google Si su aplicación tiene como objetivo Android 12 o superior y contiene actividades, servicios o receptores de transmisión que usan filtros de intención, debe declarar explícitamente el atributo android:exportado para estos componentes de la aplicación. Puedes seguir estos pasos:

  • abierto AndroidManifest.xml archivo y en la parte inferior seleccionar Manifiesto fusionado. como esto : ingrese la descripción de la imagen aquí
  • si no puede obtener una vista previa del Manifiesto combinado, en su construir.gradle conjunto de archivos compileSdkVersión 30 y targetSdkVersión 30 y sincronice su proyecto y ahora intente abrir el manifiesto fusionado nuevamente. Espero que esta vez tenga una vista previa adecuada del manifiesto fusionado. pero si no hay una vista previa, no se preocupe, aún puede navegar a archivos de manifiesto individuales de diferentes bibliotecas de terceros que haya utilizado en su proyecto.

ingrese la descripción de la imagen aquí

  • Ahora verifique todas las actividades, servicios, receptor que usa intent-filter sin Android: exportado etiqueta. En su archivo de manifiesto principal, simplemente puede agregar Android: exportado propiedad a actividad etiqueta así que agrega android:exported=”” y establece un valor booleano dentro de estas comillas. Ahora puede preguntar cuándo debo agregar android:exported=”true” o android:exported=”false” a las actividades, servicios o receptores de transmisión que usan filtros de intención. Si el componente de la aplicación incluye la categoría LAUNCHER, establezca android:exported en verdadero. En la mayoría de los demás casos, establezca android: exportado en falso.

  • Nota: también verifique los archivos de manifiesto de la biblioteca de terceros individuales si hay alguna actividad, servicio o receptor usando entonces debe anular la misma actividad, servicio o receptor en su archivo de manifiesto principal con Android: exportado propiedad.

Por ejemplo en mi caso he definido Android: exportado para todas y cada una de las actividades, servicios o receptores en mi archivo de manifiesto principal, pero en mi proyecto estaba usando maquinilla de afeitar dependencia por lo que en el manifiesto de maquinilla de afeitar si se encuentra que hay un actividad y receptor que están usando propiedad sin Android: exportado así que los declaré en mis archivos de manifiesto principales. Como se muestra abajo :

 <activity
        android:name="com.razorpay.CheckoutActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/CheckoutTheme"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <data
                android:host="rzp.io"
                android:scheme="io.rzp" />
        </intent-filter>
    </activity>

    <receiver android:name="com.razorpay.RzpTokenReceiver"
        android:exported="true"
        android:permission="android.permission.INTERNET">
        <intent-filter>
            <action android:name="rzp.device_token.share" />
        </intent-filter>
    </receiver>

Nota: en su caso, es posible que deba revisar más archivos y verificar la actividad, los servicios y mencionarlos en su archivo de manifiesto principal.

  • también después de hacer todo esto, puede volver a cambiar a targetSdkVersión 31 y compileSdkVersión 31 en tus construir.gradle expediente.

  • Genial, esto también funcionó para mí, ya que también estoy usando la biblioteca Razorpay luego de agregar CheckoutActivity y RzpTokenReceiver en manifiesto como se mencionó anteriormente.

    – Shailendra Madda

    25 de enero a las 9:27

  • ¡¡Excelente!! Mirando el archivo de manifiesto de salida en obj/Debug/Android, encuentro el servicio con “intent-filter” pero que no tiene “android: exportado” establecido

    – Ricko..

    28 de enero a las 17:04

En mi caso, solo agrego esta línea a mi manifiesto:

android:exported="true"

ingrese la descripción de la imagen aquí

  • Esto funcionó para mi proyecto Flutter

    – Mohamed Saleh

    1 jun a las 13:50

finalmente arreglé este problema

1: instalar emulador con android v 12

2: ejecute su aplicación, el compilador le dirá qué servicio/receptor… etc. causó el problema

ahora tienes que agregarlo a tu manifist y agregar el Android: exportado = “verdadero” lo

en mi caso, el problema fue con el paquete de notificación local. Recibí el mensaje para solucionarlo. receptor
com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver
así que agregué a mi manifista fuera de la actividad principal

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

y funcionó según lo previsto

El atributo “exportado” describe si se le puede permitir o no a otra persona usarlo.

Entonces, si tiene “exportado = falso” en una Actividad, ninguna otra aplicación, o incluso el propio sistema Android, puede iniciarla. Solo usted puede hacer eso, desde dentro de su propia aplicación.

Por lo tanto, la configuración “exportada = falsa” en la Actividad marcada como Actividad LAUNCHER básicamente le diría al sistema que no puede iniciar su aplicación, nunca.

Si no está utilizando ningún otro proyecto, actualice todas las versiones más recientes de la biblioteca porque algunas bibliotecas antiguas AndroidManifest.xml no añadido Android: exportado en actividades, servicios o receptores de radiodifusión

avatar de usuario
capitanteknics inc

Agregando la línea android:exported=”true” a mis manifiestos

avatar de usuario
Halil Ibrahim GÜNBULAK

si usa targetSdkVersion=31

    package="com.name.app"><!-- Channnge your package -->
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https" />
        </intent>
        <intent>
            <action android:name="android.intent.action.DIAL" />
            <data android:scheme="tel" />
        </intent>
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="*/*" />
        </intent>
    </queries>
   <application
        android:label="Tut Elimi"
        android:icon="@mipmap/ic_launcher">
       <service android:name="com.example.app.backgroundService"
           android:exported="true">
           <intent-filter>
               <action android:name="com.example.app.START_BACKGROUND" />
           </intent-filter>
       </service>
       <meta-data
           android:name="com.google.android.gms.ads.APPLICATION_ID"
           android:value=""/>
        <activity
            android:name=".MainActivity"
            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"
            android:exported="true">

            <!-- 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"
              />
            <meta-data
                android:name="io.flutter.embedding.android.SplashScreenDrawable"
                android:resource="@drawable/splash"
                />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="FLUTTER_NOTIFICATION_CLICK" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <!-- Displays an Android View that continues showing the launch screen
                 Drawable until Flutter paints its first frame, then this splash
                 screen fades out. A splash screen is useful to avoid any visual
                 gap between the end of Android's launch screen and the painting of
                 Flutter's first frame. -->
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
       <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
           android:exported="true">
           <intent-filter>
               <action android:name="android.intent.action.BOOT_COMPLETED"/>
               <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
           </intent-filter>
       </receiver>
       <service
           android:name="com.name.app.BackgroundService"
           android:enabled="true"
           android:exported="true" />
       <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>  

</manifest>  ````   

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad