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

Unity中在Android平台下打开Web网页

程序员文章站 2022-03-15 13:08:30
Unity中再andoird平台下打开web网页有个插件叫UiWebView可以实现,然而我们也自己手动实现,我参照了一些网上的博客,网上的大部分的做法是把这个功能在android下做好后作为一个jar导入到Unity中进行使用,我的做法刚好是反向的,本文的许多代码参照https://www.xuanyusong.com/archives/1418,而整个流程是恰恰相反的。首先新建一个工程,然后创建一个button,然后给button创建一个点击事件......

Unity中再andoird平台下打开web网页有个插件叫UiWebView可以实现,然而我们也自己手动实现,我参照了一些网上的博客,网上的大部分的做法是把这个功能在android下做好后作为一个jar导入到Unity中进行使用,而我们整个流程是恰恰相反的,我们先导出一个android工程后,再在android studio中打包。本文的许多代码参照https://www.xuanyusong.com/archives/1418,感谢大佬写下的代码,让我可以借鉴。
首先新建一个工程,然后创建一个button,然后给button创建一个点击事件

public class Test : MonoBehaviour
{
 public Button btn;
 // Start is called before the first frame update
 void Start()
   {
     AndroidJavaClass aj= new AndroidJavaClass("com.unity3d.player.UnityPlayer");
     AndroidJavaObject p= aj.GetStatic<AndroidJavaObject>("currentActivity");
     btn.onClick.AddListener(() =>
     {
         Debug.Log("按钮点击");
         p.Call("openWebView");
     });
    }
}

其实就是点击按钮然后调用android的方法,然后打开web页面。然后直接导出一个android工程。具体打包或者导出android工程设置不在赘述,不懂的朋友多去查阅。
Unity中在Android平台下打开Web网页
之后我们便需要在android中开始操作了,首先创建类WebViewActivity的页面,内容代码如下

package com.unity3d.player;
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);

    }
}

}

然后创建xml页面布局main.xml,这个文件的位置要在res/layout下,内容如下:

<?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中配置一下

<activity android:name=".WebViewActivity">
<!-- 连接互联网的权限 -->
<uses-permission android:name="android.permission.INTERNET" />

有网络权限的无须在配置,最后我们就可以在启动类UnityPlayerActivity中使用了,
代码如下

import android.content.Context;

public class UnityPlayerActivity extends Activity implements IUnityPlayerLifecycleEvents{
protected UnityPlayer mUnityPlayer; 
Context mContext = null;
@Override protected void onCreate(Bundle savedInstanceState)
{
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    mContext = this;
    String cmdLine = updateUnityCommandLineArguments(getIntent().getStringExtra("unity"));
    getIntent().putExtra("unity", cmdLine);
      mUnityPlayer = new UnityPlayer(this, this);
    setContentView(mUnityPlayer);
    mUnityPlayer.requestFocus();    
}
//打开页面在unity中需要调用的方法
public void openWebView(){
    Intent intent = new Intent(mContext,WebViewActivity.class);
    this.startActivity(intent);
}
....剩余代码部分没变省略

}

最后我们可以在android sutio中build一个apk看下效果,还有一点需要注意的是每次重新导出android工程后manifest文件和启动类都会重置,不过网上也有解决办法,请自行查看,最后奉上我的效果:
启动效果如下:

Unity中在Android平台下打开Web网页

点击后效果如下:
Unity中在Android平台下打开Web网页

本文地址:https://blog.csdn.net/qq_34772097/article/details/110656803

相关标签: AndroidStudio Unity