2011-08-22 197 views
6

这是我第一次问一些问题,所以如果有什么不对,请告诉我,我会尽快修复它。在后台打开WebView

我们有一位客户希望我们用原生Android应用程序登录他们的服务器,但没有给我们一个自定义的方式来做到这一点。他们希望我们使用他们必须记录的当前网站,并在认证发生后,在浏览器中检索包含我们所需数据的XML。之后,使用本机应用程序中的数据。所有这些都与用户不知道/正在使用浏览器有关。一个混乱恕我直言。

当然,我从来没有尝试过这种方法,我的第一次测试让我觉得这是不可能的(或非常困难)实现。无论何时我尝试在隐藏的WebView中加载URL,默认浏览器都会弹出显示网站。

我的主要问题是,是否有可能在后台加载webview并使用它(调用javascript等)?

谢谢。

回答

7

您可以将WebView设置为隐藏默认情况下的属性android:visibility =“gone”,在运行时与它交互,然后当您需要在加载数据后将其显示给用户时,只需调用setVisibility( View.VISIBLE)

希望这有助于!

+0

哇,我没有意识到可以用于webviews ...有道理给事实是在视图类。谢谢! –

+0

没问题,很高兴它帮助:) – AlexPriceAP

+0

AyncTask可能会有用的加载它在后台 –

1

OFC,你必须使用一个主题:

protected void getPage(){ 
    Thread th = new Thread(){ 

     public void run(){ 

      //Download and make things 



      mActivity.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        //print int the activity 

       } 
      }); 
     } 
    }; 

    th.start(); 

记住,并且那是非常重要的,你不能从线拉出到的主要活动。唯一可以在屏幕上绘制的是主要活动。你可以用2种方法绘制:

一,用_mActivity的方法。 runOnUiThread(新的Runnable(){_像我放的例子。 二,使用处理从线程将消息发送到与要绘制的信息主要活动。

*主要活动是的活动,它在屏幕那一刻,而不是应用程序的第一个活动

+0

感谢您的支持。当在一个活动中执行一个“新的WebView(this)”(而不是通过id加载的其他方法)来加载一个隐藏的WebView对象时,这是我得到一个负载正常工作的唯一方法。谢谢! – Marcus