欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Unity3D游戏引擎实现在Android中打开WebView的实例

程序员文章站 2023-02-02 12:27:47
本文讲述了如何在unity中调用android中的webview组件,实现内部浏览器样式的页面切换。首先打开eclipse创建一个android的工程: unitytes...

本文讲述了如何在unity中调用android中的webview组件,实现内部浏览器样式的页面切换。首先打开eclipse创建一个android的工程:
unitytestactivity.java 入口activity ,unity中会调用这个activity中的方法从而打开网页。

package com.xys;  
import android.content.context;  
import android.content.intent;  
import android.os.bundle;  
import com.unity3d.player.unityplayeractivity;  
public class unitytestactivity extends unityplayeractivity {  
  context mcontext = null;  
  @override  
  public void oncreate(bundle savedinstancestate) {  
    super.oncreate(savedinstancestate);  
    mcontext = this;  
  }  
  //unity中会调用这个方法,从而开打webview  
   public void startwebview(string str)  
   {  
       intent intent = new intent(mcontext,webviewactivity.class);  
       this.startactivity(intent);  
   }  
}

webviewactivity.java unity中发出通知打开这个activity 继而打开webview,没有什么难点大家看看就应当能掌握。

package com.xys;  
import android.app.activity;  
import android.os.bundle;  
import android.view.view;  
import android.view.view.onclicklistener;  
import android.webkit.webview;  
import android.widget.button;  
public class webviewactivity extends activity  
{  
  private webview webview;  
  private button close;  
  @override  
  protected void oncreate(bundle savedinstancestate) {  
    // todo auto-generated method stub  
    super.oncreate(savedinstancestate);  
    setcontentview(r.layout.main);  
    webview = (webview) findviewbyid(r.id.webview);  
    webview.loadurl("http://www.baidu.com/");  
    webview.getsettings().setjavascriptenabled(true);  
    webview.setwebviewclient(new webviewclient());  
    close = (button) findviewbyid(r.id.button);  
    close.setonclicklistener(new onclicklistener() {  
      @override  
      public void onclick(view v) {  
        webviewactivity.this.finish();  
      }  
    });  
  }  
  private class webviewclient extends android.webkit.webviewclient {  
    @override  
    public boolean shouldoverrideurlloading(webview view, string url) {  
      //这里实现的目标是在网页中继续点开一个新链接,还是停留在当前程序中  
      view.loadurl(url);  
      return super.shouldoverrideurlloading(view, url);  
    }  
  }  
}

然后是main.xml

<?xml version="1.0" encoding="utf-8"?>  
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >  
 <webview  
      android:id="@+id/webview"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_weight="1.0"
      />   
  <button  
      android:id="@+id/button"
      android:text="关闭网页"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      />   
</linearlayout>

最后是androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.xys"
  android:versioncode="1"
  android:versionname="1.0" >  
  <uses-sdk android:minsdkversion="10" />  
  <application  
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >  
    <activity  
      android:name=".unitytestactivity"
      android:label="@string/app_name" >  
      <intent-filter>  
        <action android:name="android.intent.action.main" />  
        <category android:name="android.intent.category.launcher" />  
      </intent-filter>  
    </activity>  
    <activity  
      android:name=".webviewactivity">  
    </activity>  
  </application>  
  <!-- 连接互联网的权限 -->  
  <uses-permission android:name="android.permission.internet" />  
</manifest>

ok 到这里java代码已经完全写完,然后把所有.java文件打包变成.class文件,具体转换的方法大家可以参照相关的文章,这里就不再重复介绍了。