web-dev-qa-db-fra.com

android.content.ActivityNotFoundException: Impossible de trouver une classe d'activité explicite

Je reçois cette erreur:

06-06 10:45:19.685: E/AndroidRuntime(554): Android.content.ActivityNotFoundException: Unable to find explicit activity class {com.Android.myApp/com.Android.myApp.Facebook.Example}; have you declared this activity in your AndroidManifest.xml?

Mais je l'ai déclaré dans mon fichier manifeste. Quelles pourraient être les autres raisons d'une telle exception?

Mon manifeste.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.Android.myApp"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk Android:minSdkVersion="4" />

    <uses-feature Android:name="Android.hardware.camera" />

    <uses-permission Android:name="Android.permission.INTERNET" />
    <uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission Android:name="Android.permission.CAMERA" />
    <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@Android:style/Theme.Light" >

        <activity
            Android:name=".SignUpActivity"
            Android:label="@string/app_name" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            Android:name=".SignInActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".HomeActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".selectCityActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".FeedListViewActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".SearchActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".IWantActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".DateActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".ShareActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".ShareProductActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".SharePriceActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".ShareStoreActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".ProfileActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".ShowMapActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".ParticularEntryActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".MyLocationActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".MapMarkerActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".BarcodeActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".BarcodeResult"
            Android:label="@string/app_name" />
        <activity
            Android:name=".FeedbackActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".SplashActivity"
            Android:label="@string/app_name" />
        <activity
            Android:name=".Example"
            Android:label="@string/app_name" />

        <uses-library Android:name="com.google.Android.maps" />
    </application>

</manifest>
17
Housefly

Vous avez déclaré le nom du package dans le manifeste sous la forme com.Android.myApp et le nom de l'activité .Example.So Android le recherchera à partir du com.Android.myApp.Example. Mais votre activité réside dans "com.Android.myApp/com.Android.myApp.Facebook.Example". Donnez-lui le nom de l'activité sous la forme .Facebook.Example ou le chemin complet indiqué ci-dessous. .Dans le manifeste

<activity
                Android:name="com.Android.myApp.Facebook.Example">

</activity>
34
Rasel

vous pouvez aussi utiliser 

<activity
        Android:name=".Facebook.Example"
        Android:label="@string/app_name" />
6
Amit kumar

J'ai une variation à ce problème. Je lançais une activité appelée "Paramètres" et le fait de recevoir la même erreur et d'apporter toutes les modifications suggérées au manifeste ne résolvaient pas le problème.

Le fait est que, dans l'activité d'appel, j'utilisais/importais également Android.provider.Settings, donc d'après ce que je peux voir en essayant de lancer l'activité, il y avait confusion entre les deux. J'ai donc changé cela dans le code plutôt que dans le manifeste pour inclure le chemin complet:

Intent launchScr = new Intent(this, com.foo.bar.Settings.class);

Et ça a fonctionné. Bien sûr, l’autre, et le meilleur moyen de résoudre ce problème, serait d’utiliser de meilleurs noms pour mes activités.

HTH n'importe qui avec cette variante du problème.

4
Gaddo

De votre exception, laquelle est votre classe - Facebook ou Example Parce que vous avez déclaré dans le paquet dans manifest comme com.Android.myApp Mais pour l'activité facebook, vous avez déclaré com.Android.myApp.Facebook.Example Et,

Si exemple est votre activité, vous devez déclarer votre activité sous le nom com.Android.myApp.Facebook.Example car elle provient d’un autre package ou votre nom d’activité sous le nom Facebook.Example Il est donc préférable de déclarer votre activité comme ci-dessous - 

<activity
        Android:name="com.Android.myApp.Facebook.Example"
        Android:label="@string/app_name" />
2
Praveenkumar

Assurez-vous simplement que votre activité est décorée avec cet attribut:

[Activity(Label = "Your App Name", MainLauncher=true)]

Remarque: définissez uniquement MainLauncher si nécessaire.

1
ComeIn

Parfois, cela est dû à l'existence du même nom de classe (deuxième paramètre de l'intention) dans différents packages.

J'ai également constaté que cela se produisait lorsque vous appelez startService au lieu d'appeler startActivity et inversement.

1
HZDI

Cela peut se produire sur des projets volumineux lorsque le manifeste mis en cache est désynchronisé. J'ai pu résoudre ce problème dans le terminal Android Studio avec ./gradlew clean, puis dans la barre de menus d'Android Studio en sélectionnant Fichier > Invalider les caches/Redémarrer pour faire bonne mesure

0
James Jordan Taylor

Cela fonctionne si vous avez un objet d'activité (que vous devez lancer):

 intent.setClassName(CallingActivity.this, activityToLaunch.getComponentName().getClassName());
0
AndroidGuy