调用startActivityForResult()时,Android 8.1关闭活动

问题描述 投票:3回答:1

有人来救我。我正在构建一个Android应用程序,需要从设备相机拍摄照片并将缩略图加载到ImageView中,请注意我不想保存此图像,我只想将其加载到ImageView中并从中获取位图ImageView以后。

这就是我已经实现的:启动相机:

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if(cameraIntent.resolveActivity(activityWeakReference.get().getPackageManager()) != null){
startActivityForResult(cameraIntent, UPLOAD_PICTURE_CAMERA);
}

下面是调用onActivityResult(int requestCode, int resultCode, Intent data)时调用的startActivityForResult()

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK && requestCode == UPLOAD_PICTURE_CAMERA) {
try{
                    Bundle extras = data.getExtras();
                    Bitmap imageBitmap = (Bitmap) extras.get("data");
                    imageViewphoto.setImageBitmap(imageBitmap);

                }catch (Exception e){
                    Log.e(TAG, Utility.stringify(e));
                }
}

问题:上面的代码适用于Android 7.0,但在Oreo 8.1上,活动立即关闭Camera打开,因此不调用onActivityResult()

这是我可以得到的所有日志:

I/PhoneWindow: isNeedChangeStatusBarColor taskInfo: [android.app.ActivityManager$RunningTaskInfo@c7a24ee] size: 1
    isAPPNeedChangeSBColor pkgName: com.a3lineng.softwaredev.freedom_app needKeep: false
    isNeedChangeStatusBarColor false
I/PhoneWindow: isNeedChangeNaviBarColor taskInfo: [android.app.ActivityManager$RunningTaskInfo@5566d8f] size: 1
I/PhoneWindow: isAPPNeedChange pkgName: com.a3lineng.softwaredev.freedom_app needKeep: false
    isNeedChangeNaviBarColor false
    generateLayout mNavigationBarColor: ff000000
I/PhoneWindow: generateLayout isLightNavi false, Visibility: 0
I/zygote: Do full code cache collection, code=505KB, data=398KB
I/zygote: After code cache collection, code=495KB, data=332KB
D/BaseActivity: On Pause is called
I/zygote: Do partial code cache collection, code=505KB, data=341KB
I/zygote: After code cache collection, code=505KB, data=341KB
    Increasing code cache capacity to 2MB
D/BaseActivity: On Stop is called
Disconnected from the target VM, address: 'localhost:8857', transport: 'socket'

谁在Oreo面临同样的问题?,任何建议都将受到赞赏。

android crash android-camera-intent android-8.1-oreo
1个回答
0
投票

我已经能够在我的情况下解决这个问题,我发现它是在设备上启用的名为Kill Background Activities的用户设置。我所做的只是取消选中它,并且调用活动可用于从Camera意图接收结果。

谢谢你的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.