以全屏模式从 WebView 打开图像

Dmi*_*riy 2 android android-webview

如果 webview html 内容几乎没有<img>标签,当用户在 webview 中点击图像时,是否可以在新活动中以全屏模式打开该图像?

Bor*_*jev 5

是的。基本上可以从WebView. 您可以定义要公开的方法,以便从类中进行调用WebView,然后将此类的实例传递给 ,WebView从那时起,这些方法就可以像 javascript 方法一样被调用。这是示例(这是从我的另一个答案复制粘贴的;您需要将视频意图替换为图像显示意图):

从 Web 视图中调用本机代码:
创建 Web 视图时添加 javascript 接口(基本上是 java 类,其方法将公开以通过 Web 视图中的 javascript 调用)。

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
Run Code Online (Sandbox Code Playgroud)

javascript接口类本身的定义(这是我从我的另一个答案中获取的示例类,并以本机意图打开视频)

public class JavaScriptInterface {
    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void startVideo(String videoAddress){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
        activity.startActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果您想从页面的 html 中调用此代码,您可以提供以下方法:

<script>
  function playVideo(video){
    window.JSInterface.startVideo(video);
  }
</script>
Run Code Online (Sandbox Code Playgroud)

因此,您需要添加适当的方法JSInterface并从 Web 应用程序中调用代码。