有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我得到的java找不到符号方法startActivityForResult(Intent,int)

我想在MX视频播放器和VLC中传输URL。当URL以comx结尾时,MX视频播放器可以很好地处理工作,但当它以covlc结尾时,会给我一个错误。错误是:

cannot find symbol method startActivityForResult(Intent,int)

下面是课程:

public class MyAppWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        String str=new String(url);
        if(str.endsWith("comx")){
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            Uri videoUri = Uri.parse(url.replace("?comx", ""));
            intent.setClassName("com.mxtech.videoplayer.ad","com.mxtech.videoplayer.ad.ActivityScreen");
            intent.setDataAndType(videoUri, "application/x-mpegURL");
            intent.putExtra("secure_uri", true);
            intent.putExtra("title", "Kung Fury");
            intent.setPackage("com.mxtech.videoplayer.ad");
            view.getContext().startActivity(intent);
            //view.goBack();
            return true;
        }
        else {
            if(str.endsWith("covlc")){
                Uri uri = Uri.parse(url.replace("?covlc", ""));
                int vlcRequestCode = 42;
                Intent vlcIntent = new Intent(Intent.ACTION_VIEW);
                vlcIntent.setComponent(new ComponentName("org.videolan.vlc", "org.videolan.vlc.gui.video.VideoPlayerActivity"));
                vlcIntent.setDataAndType(uri, "video/*");
                vlcIntent.putExtra("title", "Kung Fury");
                vlcIntent.putExtra("from_start", false);
                vlcIntent.putExtra("subtitles_location", "/sdcard/Movies/Fifty-Fifty.srt");
                view.getContext().startActivityForResult(vlcIntent, vlcRequestCode);
                return true;
            }
            else {
                    //Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    //view.getContext().startActivity(intent);
                    return false;
            }
        }

    }
}

共 (1) 个答案

  1. # 1 楼答案

    startActivityForResult()Activity上的方法,而不是Context可能getContext()返回的Context是一个Activity,因此您可以强制转换它并调用startActivityForResult()

    ((Activity)view.getContext()).startActivityForResult(vlcIntent, vlcRequestCode);
    

    更安全的做法是将Activity更直接地传递到MyAppWebViewClient中(例如,构造函数参数),并以这种方式使用它