美文网首页Android开发版本适配
调取Android系统相机onActivityResult立即返

调取Android系统相机onActivityResult立即返

作者: gooodong | 来源:发表于2018-06-30 11:10 被阅读80次

    分析原因:

      singleInstance状态下,系统加载任何新的activity的时候都会将新的activity移到新的栈上,保持设置为singleInstance的activity所在栈里面只有该activity。因此当设置为singleInstance,使用 startActivityForResult 后,系统将新启动的activity移到新的栈上面,原来的栈上面原activity任然保持在栈顶,所以返回的resultCode就是CANCEL。因为其他栈上的activity不能将数据返回到该栈顶上的activity。

    解决方案:

            启动系统相机的时候 Intent 不使用 Intent.FLAG_ACTIVITY_NEW_TASK,防止新起的相机Activity与当前Activity不在同一个栈中。

    if (Build.VERSION.SDK_INT >=24) {

    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

        Uri contentUri = FileProvider.getUriForFile(getContext(),  "com.bees.groupme.imgprovider", mTmpFile);

        intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);

    }else {

         intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile));

    }

    相关文章

      网友评论

        本文标题:调取Android系统相机onActivityResult立即返

        本文链接:https://www.haomeiwen.com/subject/nhgjcftx.html