Как разрешить пользователю открывать или скачивать файлы PDF в моем приложении iframe? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть приложение для Android, которое имеет iFrame.В этом я открываю страницу моего сайта, на которой есть ссылки для открытия PDF-файлов в новой вкладке.В сети все работает нормально, но в приложении iFrame файлы PDF не открываются.

Я перепробовал все <a> цели и свойство download, но файлы не открываются.

<a download href='url/mypdf.pdf' class="col-12">Open PDF</a>

1 Ответ

0 голосов
/ 23 апреля 2019

Вы можете использовать диалоговое окно или другую информацию для вашего веб-просмотра на дисплее. Важные вещи. Вы должны использовать ниже customwebclient для своего pdf-шоу в веб-просмотре.

public static void showWebDialog(Context activity, String url){
        final Dialog dialog = new Dialog(activity, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.getWindow().setLayout(RecyclerView.LayoutParams.FILL_PARENT, RecyclerView.LayoutParams.FILL_PARENT);
        dialog.setContentView(R.layout.fragment_dialog_web);
        dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
        WebView mWebView = null;
        ImageButton ib_close;
        mWebView=dialog.findViewById(R.id.web_dialog);
        ib_close=dialog.findViewById(R.id.img_dialog);
        ib_close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
            }
        });
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setLoadWithOverviewMode(true);
        mWebView.getSettings().setUseWideViewPort(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.setWebViewClient(new CustomWebClient(activity));
        mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.loadUrl(url);
        dialog.show();
    }

public class  CustomWebClient extends WebViewClient {

    @SuppressWarnings("unused") // Class tag name, used for logging
    private static final String TAG = CustomWebClient.class.getSimpleName();

    Context mActivity;

    public CustomWebClient(Context activity) {
        mActivity = activity;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        //Log.e(""+TAG,"url : "+url);
        //ContentWebViewHelper.injectCSS(view);
        super.onPageFinished(view, url);
    }

    @Override
    public void onLoadResource(WebView view, String url) {
//        int index = url.lastIndexOf(".");
//        if (index > 0) {
//            String extension = url.substring(index);
//            if (extension.equals("jpg") || extension.equals("png") || extension.equals("jpeg")) {
//                mActivity.displayFullscreenImage(url);
//            }
//        }
    }

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        int index = url.lastIndexOf(".");
        Log.d(TAG, url);
        Log.d(TAG, "--index: " + index);
        if (index > 0) {
            String extension = url.substring(index);
            if (extension.equals(".jpg") || extension.equals(".png") || extension.equals(".jpeg")) {
                //mActivity.displayFullscreenImage(url);
                ShowDialogHelper.showFullScreenImageDialog(mActivity,url);
            }
            else if(extension.equals(".pdf")){
                view.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + url);
            }
        }
        else {
            view.loadUrl(url);
        }

        return true;
    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...