You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何应用在真机上Activity停止运行?模拟器正常但真机崩溃(Intent问题)

解决模拟器正常、真机因Intent崩溃的问题

嘿,我看你遇到了模拟器运行正常,但真机上因Intent相关代码崩溃的问题,而且你贴的ListView点击事件代码没写完,先帮你梳理下最常见的几个坑,你对照排查下:

  • 目标Activity未在Manifest中注册
    模拟器在调试模式下可能会宽松处理,但真机对组件注册要求严格。如果你的Intent是跳转到自定义Activity,一定要确保在AndroidManifest.xml里添加注册声明,比如:

    <activity android:name=".BubbleActivity" />
    

    要是漏了这个,真机直接会抛出ActivityNotFoundException导致崩溃。

  • ListView点击事件里的Intent代码有语法/逻辑错误
    你贴的代码里onItemClick方法没写完,大概率是这里的Intent写法出问题了。给你贴个正确的示例,你对比下自己的代码:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String selectedItem = items.get(position);
            // 注意上下文的正确写法:要用当前Activity的实例,不能直接用匿名内部类的this
            Intent intent = new Intent(MainActivity.this, BubbleActivity.class);
            intent.putExtra("selected_item", selectedItem);
            startActivity(intent);
        }
    });
    

    这里容易踩的两个坑:

    • 上下文错误:匿名内部类里的this指的是OnItemClickListener,不是Activity,必须用当前Activity名.this;
    • 目标Activity类名写错:比如大小写、包路径不对,真机找不到组件就会崩溃。
  • 权限问题(如果Intent涉及系统功能或敏感操作)
    要是你的Intent是跳转到需要权限的系统组件(比如相机、通讯录),或者跳转后要访问敏感数据,Android 6.0+需要动态申请权限。比如访问外部存储的权限申请代码:

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
    }
    

    真机上没申请权限的话,不仅可能崩溃,还会直接拒绝操作。

  • 优先查看崩溃日志定位问题
    最快的方式是把真机连到电脑,打开Android Studio的Logcat,过滤你的应用包名或者Error级别日志,找到崩溃的堆栈信息。日志会明确告诉你是组件找不到、空指针还是权限问题,比瞎猜高效太多。

你可以先把完整的点击事件代码补全,或者根据上面的点逐一排查,尤其是Manifest注册和Intent的上下文、目标组件这两个地方,大概率能解决问题!

内容的提问来源于stack exchange,提问作者Hamza Afzal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:25:19