My Camera intent在返回时杀死fragment



自从我更新了我的三星Galaxy Tab A 10.1 (2019) 2Gb到android 10,我的相机意图在返回照片时重新启动我的应用程序/杀死我的片段。问题是不一致,有时我可以拍10张照片没有问题,因为应用程序重启时只有1张照片。

我想知道是否有人已经遇到过同样的问题,如果他们设法找到一个解决方案。

这是我开始camera intent的地方

File imageDirectory = new File(user.getImageCacheDirectoryPath() + "/pole/" + pole.getId() + "/");      
if (!imageDirectory.exists())
imageDirectory.mkdirs();
String fname = "/photo_" + foto + "_pre.jpg";
tempImageFile = new File(imageDirectory + fname);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
if (tempImageFile.exists()) {
tempImageFile.delete();
}
mImageCaptureUri = FileProvider.getUriForFile(getActivity(), BuildConfig.APPLICATION_ID + ".provider", tempImageFile);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
mImageCaptureUri);
intent.putExtra("return-data", true);
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
List<ResolveInfo> resInfoList = getActivity().getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
getActivity().grantUriPermission(packageName, mImageCaptureUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
}
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);

这个在onActivityResult

注意:调试器永远不会达到这个值。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
switch (requestCode){
case REQUEST_IMAGE_CAPTURE:
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
InputStream input = getActivity().getContentResolver().openInputStream(mImageCaptureUri);
Bitmap imageBitmap = BitmapFactory.decodeStream(input, null, options);
imageBitmap = Utils.rotateImageIfRequired(imageBitmap, tempImageFile.getPath());
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, 1100, 1400, true);
saveImage(imageBitmap);
} catch (NullPointerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
}

这是预期通过活动的生命周期,Android可能会杀死backstack活动,如果它希望,并尝试从onSaveInstanceState和onRestoreInstanceState重建它,如果你实现这两个你可以安全地避免丢失和恢复状态

最新更新