java.io.FileNotFoundException:没有内容提供者: [英] java.io.FileNotFoundException: No content provider:

查看:378
本文介绍了java.io.FileNotFoundException:没有内容提供者:的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在用videoView.setVideoPath();

实际上视频无法复制..我不知道为什么.视频的路径正确.

in fact video doesn't reproduce..i don't know why. Video's path is correct.

这是我的代码:

 public class MainActivity extends AppCompatActivity {

        private VideoView videoView;
        private int position = 0;
        private MediaController mediaController;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);


            videoView = (VideoView) findViewById(R.id.videoView);

            // Set the media controller buttons
            if (mediaController == null) {
                mediaController = new MediaController(MainActivity.this);

                // Set the videoView that acts as the anchor for the MediaController.
                mediaController.setAnchorView(videoView);


                // Set MediaController for VideoView
                videoView.setMediaController(mediaController);
            }


            try {
                // ID of video file.

                String videoUrl="https://www.youtube.com/watch?v=JHdmkP-nfsA";
                videoView.setVideoPath(videoUrl);


            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }

            videoView.requestFocus();


            // When the video file ready for playback.
            videoView.setOnPreparedListener(new OnPreparedListener() {

                public void onPrepared(MediaPlayer mediaPlayer) {


                    videoView.seekTo(position);
                    if (position == 0) {
                        videoView.start();
                    }

                    // When video Screen change size.
                    mediaPlayer.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
                        @Override
                        public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {

                            // Re-Set the videoView that acts as the anchor for the MediaController
                            mediaController.setAnchorView(videoView);
                        }
                    });
                }
            });

        }

    }

谁可以帮助我?

在此先感谢大家!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Thanks in advance everybody!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

LOGCAT:

Couldn't open https://www.youtube.com/watch?v=JHdmkP-nfsA: java.io.FileNotFoundException: No content provider: https://www.youtube.com/watch?v=JHdmkP-nfsA
10-29 12:27:28.419 25932-25932/com.example.marco.ud D/MediaPlayer: setDataSource IOException | SecurityException happend : 
                                                                   java.io.FileNotFoundException: No content provider: https://www.youtube.com/watch?v=JHdmkP-nfsA
                                                                       at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1137)
                                                                       at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:988)
                                                                       at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:911)
                                                                       at android.media.MediaPlayer.attemptDataSource(MediaPlayer.java:1102)
                                                                       at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1093)
                                                                       at android.widget.VideoView.openVideo(VideoView.java:356)
                                                                       at android.widget.VideoView.-wrap0(VideoView.java)
                                                                       at android.widget.VideoView$7.surfaceCreated(VideoView.java:632)
                                                                       at android.view.SurfaceView.updateWindow(SurfaceView.java:656)
                                                                       at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:172)
                                                                       at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1013)
                                                                       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2510)
                                                                       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1519)
                                                                       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7113)
                                                                       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
                                                                       at android.view.Choreographer.doCallbacks(Choreographer.java:702)
                                                                       at android.view.Choreographer.doFrame(Choreographer.java:638)
                                                                       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
                                                                       at android.os.Handler.handleCallback(Handler.java:751)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:6780)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)

推荐答案

您不能直接在 VideoView ExoPlayer 中播放 YouTube 视频>,为此,首先您必须下载视频,然后将该视频的语言环境路径设置为方法VideoView.setVideoPath("path")

You can not play a YouTube video directly to the VideoView or ExoPlayer, for that, first you have to download the video then set the locale path of that video to the method VideoView.setVideoPath("path")

如果您只想播放 YouTube 视频,请使用 YouTube Android Player API ,如果您只想播放其他远程视频(.mp4,.ogg,.3gp等),请使用方法VideoView.setVideoURI("uri").

If you want to play only YouTube videos then use YouTube Android Player API, and if you only want to play other remote videos (.mp4, .ogg, .3gp etc.) then use the method VideoView.setVideoURI("uri").

示例-

String videoUrl = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4";

try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(this);
        mediacontroller.setAnchorView(videoview);
        // Get the URL from String videoUrl
        Uri video = Uri.parse(videoUrl);
        videoview.setMediaController(mediacontroller);
        videoview.setVideoURI(video);

    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    }

videoview.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer mp) {
            videoview.start();
        }
    });

这篇关于java.io.FileNotFoundException:没有内容提供者:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆