Android 通过登录访问远程pdf文件(身份验证)

Android 通过登录访问远程pdf文件(身份验证),android,webview,moodle,Android,Webview,Moodle,我在web视图中加载URL时遇到问题Web视图显示为空,因为它未登录。如何使用url在不登录moodle2.6的情况下访问课程文件 使用此url格式 这是我的web视图代码 webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //progDai

我在
web视图
中加载URL时遇到问题<代码>Web视图显示为空,因为它未登录。如何使用
url
在不登录moodle2.6的情况下访问
课程文件

使用此url格式

这是我的web视图代码

webView.setWebViewClient(new WebViewClient(){

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            //progDailog.show();
            view.loadUrl(url);

            return true;
        }
        @Override
        public void onPageFinished(WebView view, final String url) {
            //progDailog.dismiss();
        }
    });

    webView.loadUrl("http://example.com/pluginfile.php/4418/mod_resource/content/10/xx-t2.pdf");

您的webclient似乎没有调用他们的超级方法,这可能是页面无法加载的原因之一,请使用以下代码加载登录页面,用户登录后可以查看预期的pdf文件

 webView.setWebViewClient(new WebViewClient(){

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);//<-- this is important when overriding
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);//<-- this is important when overriding

        }
    });

    webView.loadUrl("https://lms.jsbl.com//pluginfile.php//4925//mod_resource//content//0//calendar_cal_605.pdf");
但是,如果您知道登录的凭据,您可以通过站点向webview注入javascript,从而在webview上触发登录表单submit并直接重定向到pdf文件

2018年3月16日更新

使用以下代码在重定向期间附加google pdf小部件 并且有一个pdf扩展名

boolean isInititialRedirectComplete = false;
boolean isPdfRedirectComplete  = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    f-inal WebView webView = (WebView) findViewById(R.id.testWebView);
    webView.getSettings().setJavaScriptEnabled(true);webView.getSettings().setPluginState(WebSettings.PluginState.ON);

    webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, final String url) {
            super.onPageFinished(view, url);
                           if (url.substring(url.lastIndexOf(".")).equalsIgnoreCase(".pdf") && !isPdfRedirectComplete && isInititialRedirectComplete ){
                isPdfRedirectComplete = true;
                webView.loadUrl("https://docs.google.com/gview?embedded=true&url=" + url);
            }
            isInititialRedirectComplete = true;
        }
    });
    webView.loadUrl(
            "https://lms.jsbl.com//pluginfile.php//4925//mod_resource//content//0//calendar_cal_605.pdf");

}

您需要将pdf URL附加到Google Doc Viewer以在web视图中打开pdf,还需要为您的
web视图启用
JavaScript

public class MainActivity extends AppCompatActivity {
    WebView webview;
    String pageURL = "https://developer.android.com/guide/webapps/webview.html";
    String pdf = "http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf"; //your pdf address

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webview = findViewById(R.id.webview);

        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);

        webview.getSettings().setJavaScriptEnabled(true); // enable javascript

        webview.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //progDailog.show();
                view.loadUrl(url);

                return true;
            }

            @Override
            public void onPageFinished(WebView view, final String url) {
                //progDailog.dismiss();
            }
        });

        //webview.loadUrl(pageURL);
        webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf); //simply append pdf address to doc viewer
    }
}
在webview中打开的PDF示例


您想下载该文件还是通过webview(PDF)访问该文件?是。我想在WebView中显示PDF是否可以通过WebView共享您试图访问的确切链接是的。我将提供youlms.jsbl.com//pluginfile.php//4925//mod\u resource//content//0//calendar\u cal\u 605.pdfNot Working!!Web视图显示html脚本。这是屏幕截图,你能得到当前更改代码的屏幕截图并让我知道吗。我已经创建了一个要点,请看一看,再澄清一点,您是要允许用户使用webview登录到站点并显示pdf,还是您有登录凭据,并且您希望用户通过自动登录直接显示pdf。请检查用户是否登录,以便显示pdf,否则显示登录页面。我已经登录,我想显示PDF文件。不工作。我需要加载Moodle pdf而不是简单的pdf
public class MainActivity extends AppCompatActivity {
    WebView webview;
    String pageURL = "https://developer.android.com/guide/webapps/webview.html";
    String pdf = "http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf"; //your pdf address

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webview = findViewById(R.id.webview);

        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);

        webview.getSettings().setJavaScriptEnabled(true); // enable javascript

        webview.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //progDailog.show();
                view.loadUrl(url);

                return true;
            }

            @Override
            public void onPageFinished(WebView view, final String url) {
                //progDailog.dismiss();
            }
        });

        //webview.loadUrl(pageURL);
        webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf); //simply append pdf address to doc viewer
    }
}