WebView中的Android onDownloadStart()在Device上运行,但在模拟器上运行

时间:2017-09-20 08:29:06

标签: android webview download

我已在我的应用中为图像实现了下载模块。他们在WebView。虽然,我有一个奇怪的错误,当我在模拟器上运行应用程序时,没有调用方法onDownloadStart()。我在我的设备中使用了相同的API(22),但它在那里工作得很好。怎么回事?有任何想法吗?这就是我将下载监听器附加到WebView的方式:

ExportModule exportModule = new ExportModule(activity.getBaseContext(), activity, this.webView);
this.webView.addJavascriptInterface(exportModule, "jsint");
this.webView.setDownloadListener(exportModule);

来自@JavascriptInterface的代码是从它运行的,但后来onDownloadSart()未在设备中调用。来自onDownloadStart()班级的ExportModule

@Override
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
        System.out.println("IM IN onDwoanloadStart");
        String intentType = "image/png";
        String fileName = "img.png";
        try {
            if(url != null) {
                FileOutputStream fos;
                fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
                //conversion stuff
                fos.write(decodedStr);
                fos.getFD().sync();
                fos.flush();
                fos.close();
                Intent sendIntent = new Intent();
                sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
                sendIntent.setAction(Intent.ACTION_SEND);
                File filePath = new File(String.valueOf(context.getFilesDir()));
                File newFile = new File(filePath, fileName);
                sendIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".FileProvider", newFile));
                sendIntent.setType(intentType);
                context.startActivity(sendIntent);

            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

1 个答案:

答案 0 :(得分:0)

我已在适用于macOS的Android Studio 3.6.3上解决了此问题,可以通过以下方法解决:

  1. 确保您的模拟器支持Google Play商店。
  2. 从设置中禁用Chrome。
  3. 转到Google Play商店并找到Android System WebView,确保它是Google的官方版本。
  4. 很可能它已被禁用。您会发现“更新”选项已启用。单击更新按钮。

现在重新启动您的应用程序,您会发现“ onDownloadStart()”工作正常。

Emulator supports Google Play Store.

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here