«

Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent错误的记录。

时间:2024-3-2 19:15     作者:韩俊     分类: Android


android开发过程中,使用intent.setAction()方法指定了action的字符串,在运行中出现Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent错误的记录。

调用action的activity代码:

public class WelcomeActivity extends Activity{

    private static final String LOGIN_ACTIVITY = "com.app.activity.action.LOGIN_ACTIVITY";

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
        TextView textView = (TextView)findViewById(R.id.textView1);
        textView.setText("欢迎使用本系统");
    }   

    public void goIn(View source){
        //处理进入登录页面的操作
        Intent intent = new Intent() ;
        intent.setAction("com.app.activity.action.LOGIN_ACTIVITY");
        startActivity(intent);
    }
}

被调用的activity代码:

public class LoginActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
    }
}

两个activity都很简单,没有实现真正的业务流程。
AndroidManifest.xml文件内容

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.app.activity.WelcomeActivity"
            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=".LoginActivity"
            android:label="@string/loginTitle" >
            <intent-filter>
                <action android:name="com.app.activity.action.LOGIN_ACTIVITY" />

            </intent-filter>
        </activity>
    </application>

在运行上述程序的时候出现了:Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.app.activity.action.LOGIN_ACTIVITY }
经过查找,发现在AndroidManifest.xml文件中,被调用的LoginAction的intent-filter没有定义category。而在执行startActivity()的时候,如果没有指定category,那么Android会自动默认category是android.intent.category.DEFAULT。所以,在AndroidManifest.xml中加入

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

问题得以解决。修改后的 AndroidManifest.xml的完整文件是:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.app.activity.WelcomeActivity"
            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=".LoginActivity"
            android:label="@string/loginTitle" >
            <intent-filter>
                <action android:name="com.app.activity.action.LOGIN_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

标签: android

热门推荐