我在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);
}
}
答案 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")));
}