首页 > 解决方案 > 如何将android资源路径转换为字符串

问题描述

这是我的视频视图类,它工作正常

private void CopyReadVdo() {
    setContentView(R.layout.video_player);
    VideoView view = (VideoView) findViewById(R.id.videoview);
    String path = "android.resource://" + getPackageName() + "/" + R.raw.video1;
    Uri uri = Uri.parse(path);
    view.setVideoURI(uri);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(view);
    view.setMediaController(mediaController);
    view.start();
}

我需要用一个像这样的参数来调用这个函数

private void CopyReadVdo(String vdoname) {
    setContentView(R.layout.video_player);

    VideoView view = (VideoView) findViewById(R.id.videoview);
    String path = "android.resource://" + getPackageName() + "/" + vdoname;
    Uri uri = Uri.parse(path);
    view.setVideoURI(uri);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(view);
    view.setMediaController(mediaController);
    view.start();
}

但显示错误无法播放此视频。提前致谢。

标签: javaandroidandroid-videoview

解决方案


首先尝试rawId从资源名称中获取资源idvdoname

int rawId = getResources().getIdentifier(vdoname,  "raw", getPackageName());
String path = "android.resource://" + getPackageName() + "/" + rawId;

更新: 传递函数shakteevdoname不是CopyReadVdoR.raw.shaktee

或将类型更改vdoname为 int 并传递R.raw.shakteeCopyReadVdo函数

private void CopyReadVdo(int vdoname) {
    setContentView(R.layout.video_player);

    VideoView view = (VideoView) findViewById(R.id.videoview);
    String path = "android.resource://" + getPackageName() + "/" + vdoname;
    Uri uri = Uri.parse(path);
    view.setVideoURI(uri);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(view);
    view.setMediaController(mediaController);
    view.start();
}

推荐阅读