【发布时间】:2021-03-02 16:08:28
【问题描述】:
自从我将 Samsung Galaxy Tab A 10.1 (2019) 2Gb 更新到 android 10 后,我的相机意图在返回照片时重新启动我的应用程序/杀死我的片段。 问题是不一致,有时我可以毫无问题地拍摄 10 张照片,因为应用程序以 1 张照片重新启动。
我想知道是否有人已经遇到过同样的问题,他们是否设法找到了解决方案。
这是我开始相机意图的地方
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;
}
}
}
【问题讨论】:
-
“我的相机意图重新启动我的应用程序/杀死我的片段” - 这通常表示您的应用程序已经崩溃。插入您的设备并尝试再次复制问题,然后在此处发布您的崩溃日志
-
@user3170251 pastebin.com/AuwrSReu 这是运行日志。 E/CustomCameraError 标记相机意图的开始。没有崩溃设备返回到我的 mainActivity 杀死了我之前的片段。
标签: android android-camera-intent android-10.0