Android开发版本适配

调取Android系统相机onActivityResult立即返

2018-06-30  本文已影响80人  gooodong

分析原因:

  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));

}

上一篇 下一篇

猜你喜欢

热点阅读