web-dev-qa-db-ja.com

android.content.ActivityNotFoundException:明示的なアクティビティクラスが見つかりません

私はこのエラーを受け取ります:

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?

しかし、マニフェストファイルで宣言しました。そのような例外の他の理由は何でしょうか?

私のmanifest.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>
20
Housefly

マニフェストでパッケージ名をcom.Android.myAppおよびアクティビティ名.Example。Soとして宣言しました。Androidはcom.Android.myApp.Exampleから検索します。ただし、アクティビティは " com.Android.myApp/com.Android.myApp.Facebook.Example "。そのため、アクティビティ名を.Facebook.Exampleとして指定するか、以下に示すフルパスをマニフェストで指定します

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

</activity>
36
Rasel

あなたも使用できます

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

この問題にはバリエーションがあります。 "Settings"と呼ばれるアクティビティを起動し、同じエラーを取得し、マニフェストに提案されたすべての変更を行っても問題は修正されませんでした。

呼び出しアクティビティでは、Android.provider.Settingsを使用/インポートしていました。そのため、アクティビティを起動しようとすると、2つの間で混乱していました。そのため、マニフェストではなくコードでこれを変更して、完全なパスを含めました。

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

そしてそれは働いた。もちろん、この特定の問題を解決する他の、そしてより良い方法は、私の活動により良い名前を使用することです。

問題のこのバリアントを持つHTHのだれでも。

4
Gaddo

アクティビティがこの属性で装飾されていることを確認してください:

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

注:必要な場合にのみMainLauncherを設定してください。

2
ComeIn

あなたの例外はあなたのクラスです-FacebookまたはExampleなぜなら、あなたはマニフェストのパッケージでcom.Android.myAppただし、facebookアクティビティの場合は、com.Android.myApp.Facebook.Exampleそして、

例があなたの活動手段である場合、あなたはあなたの活動をcom.Android.myApp.Facebook.Example理由は、異なるパッケージから、またはアクティビティ名としてFacebook.Example以下のようにアクティビティを宣言できる方が良い-

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

これは、キャッシュされたマニフェストが同期しなくなると、大規模なプロジェクトで発生する可能性があります。 Android Studioターミナルで./gradlew cleanその後、Android StudioのメニューバーでFile> Invalidate Caches/Restartを適切に選択する

1

時には、異なるパッケージに同じクラス名(Intentの2番目のパラメーター)が存在することが原因です。

また、これは、startActivityを呼び出す代わりにstartServiceを呼び出すときに発生し、その逆も同様であることもわかりました。

1
HZDI

クラスを文字列Intent intent = new Intent().setClassName(this.getPackageName(), "com.some.other.name");から動的に変更したい場合、または "com.some.other.name"の代わりに配列またはその他の結果を置くことができる場合、このコードを使用する必要があります。乾杯!

0

これは、Activityオブジェクト(起動する必要がある)がある場合に機能します。

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