Android错误:找不到默认活动

时间:2015-09-11 16:37:35

标签: android android-activity android-studio

我有一个启动器活动,但android studio说"默认活动未找到"。这是在我添加登录活动之后开始的,我希望它成为启动器活动(仅用于用户注册时)。因此,一旦用户安装我的应用并提供其凭据,我希望Main活动成为启动器活动。非常感谢您的帮助。 这是我的登录和主要活动的清单。

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

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="22" />
    <library />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.BATTERY_STATS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="mypackage.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="otherpackage.permission.C2D_MESSAGE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <permission
        android:name="mypackage.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <permission 
        android:name="com.google.android.c2dm.permission.RECEIVE"></permission>
    <permission 
        android:name="otherpackage.permission.C2D_MESSAGE"
        android:protectionLevel="signature"></permission>

    <application
        android:allowBackup="true"
        android:icon="@drawable/image"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="key"/>
        <Activity
            android:name=".Login"
            android:label="REGISTER"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </Activity>
        <Activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAINACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </Activity>

        <Activity
            android:name=".MapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAPACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </Activity>

        <!--<activity
            android:name=".MyMapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MYMAPACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>-->
        <receiver
            android:name="com.google.android.gms.gcm.GcmReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
        <!--Receives the actual messages. -->
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <!--this is to support pre KitKat -->
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="mypackage" />
                <category android:name="otherpackage" />
            </intent-filter>
        </receiver>
        <receiver android:name=".MapActivity$ResponseReceiver">
            <intent-filter>
                <action android:name="mypackage.MapActivity.ResponseReceiver.ACTION_RESP" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
        <service
            android:name=".MapActivity$MyGcmListenerService"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service
            android:name=".Login$MyInstanceIDListenerService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID"/>
            </intent-filter>
        </service>
        <service android:name="mypackage.RegistrationIntentService"></service>

        <service
            android:name=".FetchAddressIntentService"
            android:exported="false"/>

    </application>

</manifest>

这是主要活动。

public class MainActivity extends MapActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                Intent i = new Intent(MainActivity.this, MapActivity.class);
                startActivity(i);
            }
        }, 8000);
    }
}

N.B主要活动扩展了我的MapActivity,它扩展了FragmentActivity。它是starnge但我在logcat中发现了这个。我没有实现iheartradio库或任何东西。 &#34;引起:java.lang.ClassNotFoundException:com.clearchannel.iheartradio.alarm.LiveDeltaUpdateService&#34;

6 个答案:

答案 0 :(得分:1)

你有一个错字。 <activity>,而非<Activity>

答案 1 :(得分:1)

完整的AndroidManifest必须包含标记及其内部。

您必须使用其完全限定的类名声明Activity,如果Activity在应用程序的包内(在manifest.package属性中声明),则可以使用点(。)省略包声明

这样:

height: some_number

PS:您必须在运行应用程序时读取由错误生成的堆栈跟踪,您可以使用Eclipse或Android Studio中的logcat窗口或Android SDK安装中包含的Android Device Monitor。

答案 2 :(得分:1)

将活动更改为清单文件中的活动

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

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="22" />
    <library />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.BATTERY_STATS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="mypackage.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="otherpackage.permission.C2D_MESSAGE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <permission
        android:name="mypackage.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />
    <permission 
        android:name="com.google.android.c2dm.permission.RECEIVE"></permission>
    <permission 
        android:name="otherpackage.permission.C2D_MESSAGE"
        android:protectionLevel="signature"></permission>

    <application
        android:allowBackup="true"
        android:icon="@drawable/image"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="key"/>
        <activity
            android:name=".Login"
            android:label="REGISTER"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAINACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAPACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <!--<activity
            android:name=".MyMapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MYMAPACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>-->
        <receiver
            android:name="com.google.android.gms.gcm.GcmReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
        <!--Receives the actual messages. -->
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <!--this is to support pre KitKat -->
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="mypackage" />
                <category android:name="otherpackage" />
            </intent-filter>
        </receiver>
        <receiver android:name=".MapActivity$ResponseReceiver">
            <intent-filter>
                <action android:name="mypackage.MapActivity.ResponseReceiver.ACTION_RESP" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
        <service
            android:name=".MapActivity$MyGcmListenerService"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service
            android:name=".Login$MyInstanceIDListenerService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID"/>
            </intent-filter>
        </service>
        <service android:name="mypackage.RegistrationIntentService"></service>

        <service
            android:name=".FetchAddressIntentService"
            android:exported="false"/>

    </application>

</manifest>

答案 3 :(得分:0)

你可以试试这个:

文件 - &gt;无效缓存 - >重新启动

答案 4 :(得分:0)

只需删除C:// Users / username中的.gradle文件夹即可。无效的缓存等没有。

答案 5 :(得分:-1)

就我而言,这很简单,因为我在一个新创建的项目中遇到了此错误,事实证明,您必须在Activity标签内添加某种Intent才能使其起作用:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

参考:

https://www.aboutonline.info/2018/08/error-running-app-default-activity-not-found-on-android-with-kotlin.html