在webview中显示URL(PDF) - Android

时间:2016-07-24 04:46:18

标签: android webview appcelerator

我需要显示位于URL中的pdf文件 我的代码很简单......

    var link_condiciones;
var idioma = Left( Titanium.Locale.getCurrentLanguage().toLowerCase(),2 );
if( idioma == "es" ) {
  link_condiciones = "http://micoachingapp.net/webpanel/archivos/viewTermsES.html";
}
else{
  link_condiciones = "http://micoachingapp.net/webpanel/archivos/viewTermsEN.html";
}
Ti.API.info("*** Link: " + link_condiciones );
// Creamos la ventana
var winCondiciones = Ti.UI.createWindow({
        backgroundColor: clr_aux4,
        extendEdges:[Ti.UI.EXTEND_EDGE_TOP],
        barColor: clr_primario_fuerte,
        tintColor: clr_primario_suave,
        title: " ",
   titleControl: Ti.UI.createImageView({ image: 'images/tituloSuperior.png' }),
        rightNavButton: Ti.UI.createImageView({ image: 'images/dummy.png', width: 35, height: 35, borderRadius: 5 })
});
// Construimos el visor Web
var WebView = Ti.UI.createWebView({
    top: '30dp',
    width: Ti.UI.FILL,
    height: Ti.UI.FILL,
    url: link_condiciones
})
winCondiciones.add(WebView);
var btnAceptar = Ti.UI.createButton({
   title: L("txt_acepto_terminos"),
   borderRadius: radioArcoBoton,
   backgroundColor: color_on,
   color: 'white',
   height: '7%',
   bottom: 3,
   width: '95%'
})
btnAceptar.addEventListener("click", function(){
   RegistrarFecha( fecha, navWindow, winCondiciones, winAnt1, winAnt2 );
});
winCondiciones.add(btnAceptar);         
// Mostramos la ventana
if(IsAndroid()) {
   winCondiciones.open();
}
else {
   navWindow.openWindow(winCondiciones);       
    } 

但我看不到PDF,只是控制台中的错误信号。

[INFO] :   TiUIWebView: (main) [2621,15443] Detected com.htc.software.Sense feature com.htc.software.Sense7.0
[INFO] :   WebViewFactory: Loading com.google.android.webview version     51.0.2704.81 (code 270408100)
[INFO] :   cr_LibraryLoader: Time to load native libraries: 2 ms (timestamps     7860-7862)
[INFO] :   cr_LibraryLoader: Expected native library version number     "51.0.2704.81", actual native library version number "51.0.2704.81"
[INFO] :   cr_LibraryLoader: Expected native library version number     "51.0.2704.81", actual native library version number "51.0.2704.81"
[INFO] :   chromium: [INFO:library_loader_hooks.cc(143)] Chromium logging     enabled: level = 0, default verbosity = 0
[INFO] :   cr_BrowserStartup: Initializing chromium process,     singleProcess=true
[ERROR] :  ApkAssets: Error while loading asset assets/natives_blob_64.bin: 
...

[INFO] :   *** Lenguaje: es
[INFO] :   *** Valor   : 2016-08-12 18:00:00
[INFO] :   *** Link:     http://micoachingapp.net/webpanel/archivos/viewTermsES.html
[INFO] :   TiUIWebView: (main) [48206,288996] Detected com.htc.software.Sense     feature com.htc.software.Sense7.0
[WARN] :   cr_AwContents: onDetachedFromWindow called when already detached.     Ignoring
[INFO] :   cr_Ime: ImeThread is not enabled.
[ERROR] :  SensorManager: uid = 10142
[INFO] :   SensorManager: registerListenerImpl: listener =     android.view.OrientationEventListener$SensorEventListenerImpl@31ca6080, sensor = {Sensor name="BMA255 3-axis Accelerometer", vendor="Bosch", version=1, type=1, maxRange=39.24, resolution=0.15328126, power=0.2, minDelay=10000}, delay = 200000,  handler = null
[WARN] :   cr_BindingManager: Cannot call determinedVisibility() - never saw a     connection for the pid: 21108
[WARN] :   cr_BindingManager: Cannot call determinedVisibility() - never saw a     connection for the pid: 21108

这个问题的完整代码。 它只有一个窗口,带有pdf和一个按钮。

Appelerador,SDK 5.3.1 GA Android 5

4 个答案:

答案 0 :(得分:3)

你可以试试这个。

    webview.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);

答案 1 :(得分:1)

WebViews无法原生显示pdf。您可以尝试通过基于网络的pdf阅读器(如Google文档)加载网址,但您无法在网页浏览中显示pdf。我不确定你为什么认为可以,WebView显示网页,而不是pdf。

答案 2 :(得分:1)

假设您的网址是:

<强> http://www.appcelerator.com/wp-content/uploads/GettingStartedTitanium_Windows.pdf

1 - 在外部浏览器中打开链接:

Ti.Platform.openURL('http://www.appcelerator.com/wp-content/uploads/GettingStartedTitanium_Windows.pdf');

2 - 假设您的网址直接以上述网址显示pdf文件,您可以使用Ti.Network.HTTPClient获取二进制数据,然后您可以在网页视图中显示,如下所示:

var url = "http://www.appcelerator.com/wp-content/uploads/GettingStartedTitanium_Windows.pdf";

 var client = Ti.Network.createHTTPClient({
     // function called when the response data is available
     onload : function(e) {
          var pdfData = this.responseData;    // it contains the pdf blob data 

           // Construimos el visor Web
          var WebView = Ti.UI.createWebView({
             top: '30dp',
             width: Ti.UI.FILL,
             height: Ti.UI.FILL,
             data : pdfData     // instead of url, use pdfData blob object
          });

          winCondiciones.add(WebView);
     },

     onerror : function(e) {
         Ti.API.error(e.error);
         alert('error');
     }
 });

 client.open("GET", url);

 client.send();

3 - 试试这个,因为我也遇到了一些奇怪的问题,在找不到任何帮助之后,它最终通过添加 borderRadius 属性起作用:

// Construimos el visor Web
var WebView = Ti.UI.createWebView({
    top: '30dp',
    width: Ti.UI.FILL,
    height: Ti.UI.FILL,
    borderRadius : 2,
    url: link_condiciones
});
winCondiciones.add(WebView);

如果它不适合您,那么您可能会尝试查看某些模块以显示远程pdf文件。祝你好运!!!

答案 3 :(得分:1)

当我尝试运行代码时,您所面临的问题可以通过在您的一条评论中提供您提供的内容的完整网址来解决。

把这个: 的 http://micoachingapp.net/webpanel/archivos/viewTermsES.html 而不是 micoachingapp.net/webpanel/archivos/viewTermsES.html

现在,我看到的很奇怪的是,如果我打开这个网址 http://www.micoachingapp.net/webpanel/archivos/viewTermsES.html ,我想知道为什么只需添加 www就可以转到其他pdf 在其中。

仔细查看我上面提到的所有网址,这些是:

  1. 你的 - micoachingapp.net/webpanel/archivos/viewTermsES.html
  2. 如果您将网址粘贴到任何浏览器中,然后您将从地址栏中再次复制该网址,您将获得以下信息: http://micoachingapp.net/webpanel/archivos/viewTermsES.html
  3. 现在添加 www - http://www.micoachingapp.net/webpanel/archivos/viewTermsES.html
  4. 在WebView中

    • 网址1显示了您在问题中提到的错误。
    • 网址2是chrome或safari或任何桌面浏览器显示的实际网址。
    • URL 3接受其他一些pdf ......怎么可能???

    所以你的解决方案就在这3个网址中,可能是域名问题,或者我不知道它是什么,因为我从未遇到过这样的问题。

    但是可以肯定的是,如果您使用Ti.Platform.openURL在外部设备浏览器中打开它,它将会起作用