Android 12(SDK > 29)ACTION_IMAGE_CAPTURE 的 Extra_Output 不起作用

标签 android android-intent android-service android-camera

我想用相机拍照,然后将其发送到另一个 Activity 。一切都在模拟器上运行,没有任何问题。但是,一旦我在我的真实设备上尝试该应用程序,我总是在 ActivityResultLauncher 中获得状态代码 0,并且没有调用 If 分支。另一方面,在模拟器上我得到 -1 并且开始调用第二个 Activity 的 Intent 。我究竟做错了什么 ?
我在真实设备上使用 Android 12 (SKD 31)
我现在还使用模拟器 skd > 29 -> 相同的问题对其进行了测试。当我在 Camera View 中为图像按下 Ok 按钮时,Android 会将我返回到 MainActivity,而不是像预期和期望的那样返回到 AddNewPlace Activity 。调试器/logcat 中没有错误。一旦我使用版本 SDK < 29,一切正常。我认为这与 FileProvide 或 Intent 中的 EXTRA_OUTPUT 有关。
list .xml
enter image description here
这个也行不通
enter image description here
相机的代码:

      File file = new File(Environment.getExternalStorageDirectory(),
                        UUID.randomUUID()+".jpg");

      outputFileUri = FileProvider.getUriForFile(MainActivity.this,BuildConfig.APPLICATION_ID + ".fileprovider",file);
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
      startActivityIntent.launch(intent);




       ActivityResultLauncher<Intent> startActivityIntent = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if(result.getResultCode() == RESULT_OK) // 0 on real device , -1 on Emulator
                {
                    if(result.getData() != null)

                    {
                        Log.e("FILE : ", outputFileUri.toString());
                        
                        Intent intent = new Intent(MainActivity.this,AddNewPlace.class);
                        intent.putExtra("File",outputFileUri.toString());

                        startActivity(intent);
                    }
                }

            }
        });
编辑
更新了代码,也不行。我是否必须更改某些内容
文件提供者?
File file  = 
MainActivity.this.getExternalFilesDir(UUID.randomUUID()+".jpg");

最佳答案

在 list 文件中添加这些行

<queries>
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE" />
        </intent>
    </queries>

关于Android 12(SDK > 29)ACTION_IMAGE_CAPTURE 的 Extra_Output 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72346788/

相关文章:

java - 从android中的第一个应用程序启动第二个应用程序的 Activity

java - 通过 'if (position == x)' 方法更改 ListView 项目的文本颜色

android - Firebase 事件未从 Android 服务记录

Android如何从服务中的特定类获取上下文

android - CardStackListener 不提供任何回调

android - 在webview android中放大/缩小

android studio list 文件问题

android - 如何通过 Intent Android 从外部存储分享 gif 图像?

android - 无法使用服务上下文使用 Material 组件来膨胀布局

java - 无法使用 STREAM_VOICE_CALL 通过 Android Java 中的 MediaPlayer 播放音频