Du hast ein APK oder Android App Bundle hochgeladen, das eine Aktivität, einen Aktivitäts-Alias, einen Dienst oder einen Broadcast-Empfänger mit Intent-Filter, aber ohne den Zusatz „an

Lesezeit: 8 Minuten

Benutzer-Avatar
Syed Waleed

Ausgabe : Sie haben ein APK oder Android App Bundle hochgeladen, das eine Aktivität, einen Aktivitäts-Alias, einen Dienst oder einen Broadcast-Empfänger mit Intent-Filter, aber ohne den Eigenschaftssatz „android:exported“ enthält. Diese Datei kann nicht auf Android 12 oder höher installiert werden. Siehe: developer.android.com/about/versions/12/behavior-changes-12#exported

Meine AndroidManifest.xml-Datei

<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" />

Benutzer-Avatar
MANISH

Gemäß der neuen Richtlinie von Google Wenn Ihre App auf Android 12 oder höher ausgerichtet ist und Aktivitäten, Dienste oder Broadcast-Empfänger enthält, die Intent-Filter verwenden, müssen Sie das Attribut android:exported explizit für diese App-Komponenten deklarieren. Sie können diesen Schritten folgen:

  • offen AndroidManifest.xml Datei und unten auswählen Zusammengeführtes Manifest. so was : Geben Sie hier die Bildbeschreibung ein
  • Wenn Sie das zusammengeführte Manifest nicht in der Vorschau anzeigen können, dann in Ihrer build.gradle Dateisatz compileSdkVersion 30 und targetSdkVersion 30 und synchronisieren Sie Ihr Projekt und versuchen Sie jetzt erneut, das zusammengeführte Manifest zu öffnen. Ich hoffe, dass Sie dieses Mal eine ordnungsgemäße Vorschau des zusammengeführten Manifests haben. Aber wenn es keine Vorschau gibt, machen Sie sich keine Sorgen, Sie können immer noch zu einzelnen Manifestdateien aus verschiedenen Bibliotheken von Drittanbietern navigieren, die Sie in Ihrem Projekt verwendet haben.

Geben Sie hier die Bildbeschreibung ein

  • Überprüfen Sie nun alle Aktivitäten, Dienste und Empfänger, die den Intent-Filter verwenden, ohne Android: exportiert Schild. In Ihrer Hauptmanifestdatei können Sie einfach hinzufügen Android: exportiert Eigentum zu Aktivität tag also fügen Sie android:exported=”” hinzu und setzen Sie einen booleschen Wert in diese Anführungszeichen. Jetzt fragen Sie sich vielleicht, wann ich android:exported=”true” oder android:exported=”false” zu den Aktivitäten, Diensten oder Broadcast-Empfängern hinzufügen muss, die Absichtsfilter verwenden. Wenn die App-Komponente die Kategorie LAUNCHER enthält, setzen Sie android:exported auf true. In den meisten anderen Fällen setzen Sie android:exported auf false.

  • Hinweis: Überprüfen Sie auch einzelne Bibliotheksmanifestdateien von Drittanbietern, wenn Aktivitäten, Dienste oder Empfänger verwendet werden dann müssen Sie dieselbe Aktivität, denselben Dienst oder denselben Empfänger in Ihrer Hauptmanifestdatei mit überschreiben Android: exportiert Eigentum.

Zum Beispiel habe ich in meinem Fall definiert Android: exportiert für jede einzelne Aktivität, jeden Dienst oder Empfänger in meiner Hauptmanifestdatei, aber in meinem Projekt, das ich verwendet habe Razorpay Abhängigkeit so im Manifest von Rasiermesser wenn gefunden, dass es eine gibt Aktivität und Empfänger die verwenden Eigentum ohne Android: exportiert also habe ich sie in meinen Hauptmanifestdateien deklariert. Wie nachfolgend dargestellt :

 <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>

Hinweis: In Ihrem Fall müssen Sie möglicherweise weitere Dateien durchgehen und Aktivitäten und Dienste überprüfen und in Ihrer Hauptmanifestdatei erwähnen.

  • Auch nachdem Sie all dies getan haben, können Sie wieder zu ändern targetSdkVersion 31 und compileSdkVersion 31 in deiner build.gradle Datei.

  • Großartig, das hat auch bei mir funktioniert, da ich nach dem Hinzufügen auch die Razorpay-Bibliothek verwende CheckoutActivity und RzpTokenReceiver im Manifest wie oben erwähnt.

    – Shailendra Madda

    25. Januar um 9:27 Uhr

  • Groß!! Wenn ich mir die Ausgabemanifestdatei in obj/Debug/Android ansehe, finde ich den Dienst mit “intent-filter”, aber “android:exported” ist nicht festgelegt

    – Ricko..

    28. Januar um 17:04 Uhr

In meinem Fall füge ich einfach diese Zeile zu meinem Manifest hinzu:

android:exported="true"

Geben Sie hier die Bildbeschreibung ein

  • Dies funktionierte für mein Flutter-Projekt

    – Mohamed Saleh

    1. Juni um 13:50 Uhr

Ich habe dieses Problem endlich behoben

1: Installieren Sie den Emulator mit Android v 12

2: Führen Sie Ihre App aus, der Compailer wird Ihnen sagen, was Dienst/Empfänger usw hat das Problem verursacht

Jetzt müssen Sie es zu Ihrem Manifist hinzufügen und die hinzufügen android:exported=”true” dazu

In meinem Fall war das Problem mit dem lokalen Benachrichtigungspaket, ich bekam die Nachricht, dies zu beheben Empfänger
com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver
also habe ich mein manifist außerhalb der hauptaktivität hinzugefügt

 <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>

und es funktionierte wie gewollt

Das Attribut „exportiert“ beschreibt, ob jemand anderes es verwenden darf oder nicht.

Wenn Sie also „exported=false“ für eine Aktivität haben, kann keine andere App oder sogar das Android-System selbst sie starten. Das können nur Sie innerhalb Ihrer eigenen Anwendung tun.

Die Einstellungen “exported=false” für die als LAUNCHER-Aktivität gekennzeichnete Aktivität würden dem System also grundsätzlich mitteilen, dass es Ihre Anwendung niemals starten kann.

Wenn Sie kein anderes Projekt verwenden, aktualisieren Sie die neuesten Versionen aller Bibliotheken, da einige alte Bibliotheken vorhanden sind AndroidManifest.xml nicht hinzugefügt android: exportiert in Aktivitäten, Dienstleistungen oder Rundfunkempfängern

Benutzer-Avatar
Captainteknics Inc

Hinzufügen der Zeile android:exported=”true” zu meinen Manifes

Benutzer-Avatar
Halil İbrahim GÜNBULAK

wenn Sie targetSdkVersion=31 verwenden

    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>  ````   

1019180cookie-checkDu hast ein APK oder Android App Bundle hochgeladen, das eine Aktivität, einen Aktivitäts-Alias, einen Dienst oder einen Broadcast-Empfänger mit Intent-Filter, aber ohne den Zusatz „an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy