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

三星Android相机横屏模式下onActivityResult返回数据为空

三星Android相机横屏拍照后onActivityResult数据为空的解决办法

问题场景

调用相机的Activity固定为竖屏模式,在三星设备上横屏拍摄图片后,onActivityResult中Intent data和mCurrentPhotoPath均为空,但竖屏拍摄功能正常。

问题原因

当相机以横屏模式拍照完成返回时,由于调用相机的Activity设置了固定竖屏,系统会触发Activity销毁重建流程,导致存储图片路径的成员变量mCurrentPhotoPath被清空,同时相机返回的Intent data也会因为配置变更出现异常。

解决方案

方案1:保存并恢复图片路径

在Activity的生命周期方法中保存和恢复mCurrentPhotoPath,避免重建时丢失数据:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    // 保存当前图片路径
    outState.putString("current_photo_path", mCurrentPhotoPath);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity_layout);
    // 从重建状态中恢复路径
    if (savedInstanceState != null) {
        mCurrentPhotoPath = savedInstanceState.getString("current_photo_path");
    }
}

方案2:禁止Activity因屏幕旋转重建

在AndroidManifest.xml中给调用相机的Activity添加configChanges属性,避免屏幕旋转触发重建:

<activity
    android:name=".DoctorVisit"
    android:screenOrientation="portrait"
    android:configChanges="orientation|screenSize|keyboardHidden">
</activity>

额外检查项

  • 确认createImageFile方法中创建的存储目录存在且有读写权限,Android 10+需适配分区存储规则
  • 检查FileProvider的paths.xml配置,确保能正确映射到图片存储目录

优化后的onActivityResult(容错处理)

增加空值判断的容错逻辑,提升稳定性:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_TAKE_PHOTO && resultCode == Activity.RESULT_OK) {
        if (mCurrentPhotoPath != null && !mCurrentPhotoPath.isEmpty()) {
            ArrayList<String> photoPaths = new ArrayList<>();
            photoPaths.add(mCurrentPhotoPath);
            manageFileSize(photoPaths);
        } else {
            // 此处可添加拍照失败的提示逻辑
        }
    }
}

内容的提问来源于stack exchange,提问作者Sagar Zala

相关产品推荐
方舟 Agent Plan

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

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