升级Android14(SDK34)后调用系统Intent启动Activity崩溃求助
问题原因与解决方案
问题核心
从崩溃日志和代码可以明确:你给启动系统设置的Intent强制指定了自己应用的包名reactContext.getPackageName(),但Settings.ACTION_DISPLAY_SETTINGS对应的是系统设置应用的Activity,并不在你的应用包内。Android 14对Intent的包名匹配校验更严格,直接导致系统找不到可处理该Intent的Activity,触发ActivityNotFoundException。
修复代码
直接移除设置包名的代码,创建正确指向系统设置的Intent即可:
Intent i = new Intent(Settings.ACTION_DISPLAY_SETTINGS); Objects.requireNonNull(reactContext.getCurrentActivity()).startActivity(i);
额外优化建议
为了避免类似异常,建议在启动Intent前先校验是否有应用能响应:
Intent i = new Intent(Settings.ACTION_DISPLAY_SETTINGS); PackageManager packageManager = reactContext.getPackageManager(); if (i.resolveActivity(packageManager) != null) { Objects.requireNonNull(reactContext.getCurrentActivity()).startActivity(i); } else { // 这里可以添加提示逻辑,比如告知用户无法打开设置 }
内容的提问来源于stack exchange,提问作者user23508983
相关产品推荐
相关产品推荐

