错误:活动类 .MainActivity 不存在

Posted

技术标签:

【中文标题】错误:活动类 .MainActivity 不存在【英文标题】:Error: Activity class .MainActivity does not exist错误:活动类 .MainActivity 不存在 【发布时间】:2020-03-06 18:27:09 【问题描述】:

我尝试在我的 android 设备上运行我的 android 应用程序,但它一直说我的 Main Activity 不存在,尽管我的 Main Activity 类在那里

我尝试创建一个新项目,然后复制了我以前的代码并运行了一段时间。但随后又产生了同样的错误。

Error while executing: am start -n "com.example.sms/com.example.sms.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent  act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.sms/.MainActivity 
Error type 3
Error: Activity class com.example.sms/com.example.sms.MainActivity does not exist.

Error while Launching activity


可能的android manifest中已经有一个intent-filter:

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

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

我已经尝试清理和重建项目。但它仍然得到同样的错误。我的安卓设备版本是android 9。

这是我的主要活动:

package com.example.sms;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements View.OnClickListener 

    EditText etNumber, etMessage;
    Button btnSend;


    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etNumber = (EditText)findViewById(R.id.etNumber);
        btnSend = (Button)findViewById(R.id.btnSend);
        btnSend.setOnClickListener(this);

    

    public void MyMessage() 

        String phoneNum = etNumber.getText().toString().trim();
        String spamMessage = "Hi";

        if (etNumber.getText().toString().equals("09152006203")) 
            if (!etNumber.getText().toString().equals("")) 
                SmsManager smsManager = SmsManager.getDefault();
                ArrayList<String> sms = smsManager.divideMessage(spamMessage);
                smsManager.sendMultipartTextMessage(phoneNum, null,sms,null, null);

                Toast.makeText(this, "Message has been sent", Toast.LENGTH_SHORT).show();

             else 
                Toast.makeText(this, "Please enter number or message", Toast.LENGTH_SHORT).show();
            
         else 
            Toast.makeText(this, "Number is incorrect!", Toast.LENGTH_SHORT).show();
        
    

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) 
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        switch(requestCode)

            case 0:
                if(grantResults.length>=0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                    MyMessage();
                 else 
                    Toast.makeText(this, "You do not have required permission", Toast.LENGTH_SHORT).show();
                
        
    

    @Override
    public void onClick(View v) 
        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS);

        if(permissionCheck == PackageManager.PERMISSION_GRANTED)
            MyMessage();
        
        else
            ActivityCompat.requestPermissions(this, new String[]Manifest.permission.SEND_SMS, 0);
        


    


【问题讨论】:

发生这种情况是因为您的包名称有冲突转到您的主要活动类复制它的包名称并将其粘贴到您的清单活动标签中代替 .MainActivity 这个有很多答案,看看***.com/questions/20915266/… @Mr.Patel 发生同样的错误:( 请发布您的活动代码 确保应用的id、包正确。尝试从 android studio 卸载设备中的当前应用和File &gt; Invalidate caches / restart,然后再次运行。 【参考方案1】:

您可以尝试使用以下 ADB 命令卸载应用并重新运行吗?

adb uninstall <your-apps-package-name>

【讨论】:

【参考方案2】:

你可以删除idea的文件夹,然后重启你的项目。

【讨论】:

谢谢。你拯救了我的一天。这是简单的答案。 拯救了我的一天.. 非常有帮助的其他解决方案没有奏效 非常感谢!!!这就是解决方案!!!【参考方案3】:

intent-filter 添加到AndroidManifest.xml

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

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

【讨论】:

嗨。谢谢你的回复。我的 android 清单中已经有一个意图过滤器,但它仍然得到相同的错误:(【参考方案4】:

选择路径:

标签运行/编辑配置/标签常规/午餐选项/启动。

然后选择默认活动选项。 如果问题没有解决,请选择 Specified Activity 选项并选择 MainActivity。

如果问题解决了,很可能是activity路径在错误的androidManifest中。路径完全可以写在androidmanifest中。

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

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

在上面的代码中写活动的路径而不是单词路径。 并返回应用配置并再次选择默认活动。

【讨论】:

【参考方案5】:

试试这个

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

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

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

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

<activity android:name="com.example.sms.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

【讨论】:

尝试所有这些【参考方案6】:

您可以在此处查看此回复Error type 3 Error: Activity class does not exist。

另外,另一个常见问题是,如果您在具有多个用户帐户的物理设备上运行应用程序。例如。主要用户和访客用户。在这种情况下,如果一个用户不更新他们的应用程序,可能会发生冲突。请按照以下步骤操作;

    转到设置。 转到应用程序。 选择您的应用。 打开右上角的溢出菜单并选择为所有用户卸载。 完成。尝试安装,然后再次启动您的应用。

另一种更长的替代方法是在一个帐户中卸载应用程序,然后切换帐户并在另一个帐户中卸载。

希望对你有帮助。

【讨论】:

【参考方案7】:

同样的错误发生在我身上,我通过重命名包并使用“清理项目和重建项目”解决了它......然后我关闭了 android stodio 并重新启动它然后它工作正常。

【讨论】:

【参考方案8】:

当我在 AVD 上启用指纹/PIN 锁定并随后运行应用程序时,我曾经遇到过这种情况。

我发现我需要在运行应用程序之前解锁设备。

【讨论】:

这被否决了,但我投了赞成票,因为对我来说就是这种情况。我的模拟器在启动时仍然被锁定,我得到了这个错误。解锁模拟器后,应用程序运行良好,没有误导性的“MainActivity 不存在”错误。【参考方案9】:

您可以在此处查看此响应错误类型 3 错误:活动类 不存在。

另外,另一个常见问题是,如果您在具有多个用户帐户的物理设备上运行应用程序。例如。主要用户和访客用户。在这种情况下,如果一个用户不更新他们的应用程序,可能会发生冲突。请按照以下步骤操作;

转到设置。 转到应用程序。 选择您的应用。 打开右上角的溢出菜单,然后为所有用户选择卸载。 完毕。尝试安装然后再次启动您的应用程序。 另一种更长的替代方法是在一个帐户中卸载应用程序,然后切换帐户并在另一个帐户中卸载。

【讨论】:

以上是关于错误:活动类 .MainActivity 不存在的主要内容,如果未能解决你的问题,请参考以下文章

错误类型 3 - 活动类不存在

MainActivity中的BroadcastReceiver不接收广播意图

错误类型 3. Activity 类 com.awesome_project/ com.awesome_project.MainActivity 在 react native 中不存在(Android

如何将片段活动添加到 MainActivity.java 或 MainActivity.kt

MainActivity 运行时未启动 [重复]

错误类型 3:活动类 ... 不存在