在android Webview中显示带有身份验证的pdf

时间:2014-08-06 06:03:19

标签: android android-webview

我在Android应用程序中工作,我想从android webview中的链接打开pdf。但该链接已实施认证。我无法用pdf打开该链接。但是如果我放置一个没有pdf的链接,我可以在android webview中看到这个网页。所以认证工作正常。问题是当我追加" https://docs.google.com/gview?embedded=true&url="到网址打开pdf。

请查看我的代码。

public class MainActivity extends Activity {

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        WebView webview = new WebView(MainActivity.this);
        webview.getSettings().setJavaScriptEnabled(true);
        String url=
                 "https://docs.google.com/gview?embedded=true&url=" +"http://spahousingli.evero.com/SPADocuments/Forms/Clients/Admissions/ADM000000011.pdf";


        webview.loadUrl(url);
        webview.setWebViewClient(new WebViewClient() {
            public void onReceivedHttpAuthRequest(WebView view,
                    android.webkit.HttpAuthHandler handler, String host,
                    String realm) {

                handler.proceed("username", "password");
            };
        });
        setContentView(webview);

    }   
}

1 个答案:

答案 0 :(得分:2)

我认为问题在于用于登录的凭据(基本身份验证的http标头)会发送到google网址,Google也不会将其发送到spahousingli.evero.com。因此,spahousingli.evero.com不会收到身份验证标题,也会拒绝来自Google的请求。

我认为首先下载pdf并在您的设备上使用Adobe Reader打开它是最简单的解决方案。

修改
将pdf下载到手机上。 (locationOfYourPdfFile) 使用以下代码打开pdf:

File pdfFile = new File(locationOfYourPdfFile);
Uri path = Uri.fromFile(pdfFile);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path,"application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

try{
    startActivity(pdfIntent);
}catch(ActivityNotFoundException e){
    Toast.makeText(MyPDFDemo.this, "No Application available to view pdf", Toast.LENGTH_LONG).show();
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.adobe.reader")));
}