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

Android Studio应用无法启动Chrome报Parcel空字符串读取错误求助

问题根因定位

  • 核心问题是Android 11(API 30及以上)的包可见性限制:从API 30开始,系统默认限制应用查询设备上其他已安装应用的信息,未在清单文件声明目标包名的前提下,调用getLaunchIntentForPackage()会直接返回null,你直接将null传入startActivity()就会触发异常。
  • 次要问题是代码缺少非空校验:就算目标应用未安装,getLaunchIntentForPackage()也会返回null,未做判断直接调用会引发空指针崩溃。
  • 你日志中输出的libEGL、gift-manager相关报错和跳转逻辑无关,属于设备厂商系统、渲染模块的常规日志,不需要处理。

修复步骤

1. 声明包查询权限

在你的AndroidManifest.xml的<manifest>标签下(不要放在<application>标签内部)添加如下配置,声明你需要查询的第三方应用包名:

<queries>
    <!-- 要打开Chrome就声明Chrome的包名,后续要打开其他应用可以继续加<package>条目 -->
    <package android:name="com.android.chrome" />
</queries>

2. 优化跳转代码,增加非空校验

修改你的跳转逻辑,避免空指针异常,同时可以增加异常兜底处理:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cctv);
    start = findViewById(R.id.button2);
    start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.chrome");
            if (intent != null) {
                startActivity(intent);
            } else {
                // 兜底逻辑:可以提示用户未安装目标应用,或者跳转到应用市场下载
                Toast.makeText(CctvActivity.this, "未安装Chrome浏览器", Toast.LENGTH_SHORT).show();
            }
         }
    });
}

内容的提问来源于stack exchange,提问作者Robert LiBert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:39:03