[英]failed to call intent (camera.action.CROP) on AVD(API Level 31) without any exception msg
我的代碼如下。
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
intent.setData(mImageCaptureUri);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
grantUriPermission(getPackageName(),mImageCaptureUri,Intent.FLAG_GRANT_READ_URI_PERMISSION);
grantUriPermission(getPackageName(),mImageCropUri,Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
intent.putExtra("outputX", 480);
intent.putExtra("outputY", 480);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("scaleUpIfNeeded", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCropUri);
intent.putExtra("crop", "true");
intent.putExtra("return-data", false);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true);
try {
startActivityForResult(intent, CROP_FROM_CAMERA);
}
catch (Exception e) {
e.printStackTrace();
}
測試環境為AVD(API Level 31)。 它應該有一個默認的裁剪應用程序,谷歌照片。 我關於拍照的代碼工作正常。
運行我的應用程序時,我從下載文件夾中下載 select a.jpg 文件,然后調用 intent camera.action.CROP)。 但是代碼根本不生效。
我檢查了logcat中的兩個uri,
mImageCaptureUri = content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F71/ORIGINAL/NONE/image%2Fpng/1987893059
mImageCropUri = content://com.myapp.fileprovider/my_pic/Pictures/tmp_kuilimar_16712596169354514375851720661420.jpg
此外,我無法使用 e.printStackTrace() 在 LogCat 中獲取任何異常消息。
那么,怎么了? ...... 謝謝大家。
它應該有一個默認的裁剪應用程序,谷歌照片
不需要任何設備,更不用說任何設備的任何用戶,都可以擁有支持您未記錄和不受支持的Intent
操作的應用程序。 並且不需要 Google Photo 或任何其他特定應用程序支持該未記錄且不受支持的Intent
操作。
有許多適用於 Android 的圖像裁剪庫。 請使用一個。
我發現問題是由 grantUriPermission() 引起的。 我們應該向 Google Photo 授予 Uri 權限,這將執行 CROP,而不是應用程序本身。 謝謝你們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.