我必须在我的应用中分享视频(即聊天) . 所以我已经做了记录它的意图,然后发送它 .

当我启动共享视频选项时,意图打开相机,我录制几秒钟的视频,然后我分享 . 它工作“很好”,直到我意识到视频无法再现 .

当我转到文件浏览器时,我看到视频的名称,类型和大小正确,但可以播放 . 当我看到这个时,我认为这是手机的问题 . 所以我用相机应用程序做了一个视频,没关系 .

这是一张显示我的意思的图片:

(第一个视频是从(我的)聊天应用程序中获取的“损坏”)

enter image description here

这是我用来调用意图的代码 .

我做错事情了?或者我忘了一些特殊的参数?

Method to call intent:

void startVideoTaker() {

        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        File video = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "cs_"
                + new Date().getTime() + ".mp4");

        mLastVideo = Uri.fromFile(video);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mLastVideo);

        startActivityForResult(intent, REQUEST_VIDEO_CAPTURE);

    }

Piece of code where is received the intent

Uri fileUri = null;
                if (requestCode == REQUEST_VIDEO_CAPTURE) {
                    fileUri = mLastVideo;
                } else {
                    fileUri = mLastPhoto;
                }

                File file = new File(getRealPathFromURI(fileUri));

                SharedPreferences prefs = getSharedPreferences("FILESENDING", Context.MODE_PRIVATE);
                SharedPreferences.Editor prefsEditor = prefs.edit();
                prefsEditor.putString("path", getRealPathFromURI(fileUri));
                prefsEditor.putBoolean("file", true);
                prefsEditor.commit();

                final Handler handler = new Handler();
                MediaScannerConnection.scanFile(this, new String[] { file.toString() }, null,
                        new MediaScannerConnection.OnScanCompletedListener() {
                            @Override
                            public void onScanCompleted(String path, final Uri uri) {

                                handler.post(new Runnable() {
                                    @Override
                                    public void run() {
                                        if (requestCode == REQUEST_VIDEO_CAPTURE) {
                                            handleSendDelete(mLastVideo, true, false);
                                        } else {
                                            handleSendDelete(mLastPhoto, true, true);
                                        }

                                    }
                                });
                            }
                        });