首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android: Uri抛出NoSuchFieldException

Android: Uri抛出NoSuchFieldException
EN

Stack Overflow用户
提问于 2015-12-08 18:05:07
回答 1查看 66关注 0票数 0

使用下面的方法,我将播放列表中的视频。

代码语言:javascript
复制
videoItem.setVideoPath(filePaths.get(position));
videoItem.setClickable(true);
videoItem.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        player.playVideo(videoItem);
        return true;
    }
});

videoItem变量是VideoView类的实例,player变量及其方法来自自定义的VideoPlayer类。

这是VideoPlayer类。

代码语言:javascript
复制
public class VideoPlayer {
    private Context context;
    private Uri uri;
    private boolean isVideoPlaying = false;

    public VideoPlayer(Context context) {
        this.context = context;
    }

    public void getVideoUri(VideoView video) {
        try {
            Field field = VideoView.class.getDeclaredField("uri");
            field.setAccessible(true);
            uri = (Uri) field.get(video);
        } catch (Exception e) {
            Toast.makeText(context, "Exception caught: " + e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }

    public void playVideo(VideoView video) {
        getVideoUri(video);
        MediaController mediaController = new MediaController(context);
        mediaController.setAnchorView(video);
        mediaController.setMediaPlayer(video);
        video.setMediaController(mediaController);
        video.setVideoURI(uri);
        video.start();
        isVideoPlaying = true;
    }
}

当我点击视频观看,它开始播放。这不是问题。但同时,也显示了当异常被捕获时抛出的土司消息。为什么在代码中会出现异常?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-08 21:20:42

您的错误说"uri"不是VideoView类的字段,请检查VideoView类并更正要访问的字段的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34162896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档