如题,本文将介绍关于如何制作unity插件,并通过unity调用Android中的程序,并打开Webview访问网页。本文参考雨松momo的文章http://www.xuanyusong.com/archives/1418,在此表示感谢。

   开发环境:win7,Unity,Eclipse

   手机:me525+

   首先,我们在Eclipse中新建一个工程OpenWebView,会默认生成一个MainActivity.java。在写程序之前我们要去你安装Unity程序的目录下Unity->Editor->Data->PlaybackEngines->androidplayer->bin->classes.jar ,将这个classes.jar文件拷贝出来,先放在桌面上,然后打开Eclipse将我们刚刚找到的classes.jar文件放在工程的libs文件下面。

   好了,现在可以开始编程了.

   在MainActivity.java文件中

package com.cheng.jack;import com.unity3d.player.UnityPlayerActivity;import android.content.Context;import android.content.Intent;import android.os.Bundle;public class MainActivity extends UnityPlayerActivity {    private Context mContext;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mContext = this;    }    //这个函数将是我们通过unity调用的函数    public void OpenWeb(){        //这里是直接跳转到M_Webview这个Activity中        Intent intent = new Intent();        intent.setClass(mContext, M_Webview.class);        mContext.startActivity(intent);                                                                                                                                                                                                                                                                                                                                                                                                  }}

   接下来我们再在Eclipse中新建一个Class,命名为M_Webview(这个名字自己)

M_Webview的代码如下:

package com.cheng.jack;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;public class M_Webview extends Activity {    private WebView mView;    private Button mButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        super.setContentView(R.layout.activity_main);        //获得我们的WebView和Button        mView = (WebView)findViewById(R.id.webview);        mButton = (Button)findViewById(R.id.btn);                                                                                                                                                                                                                                                                                                                                                                                             //将WebView的初始状态设为百度网页        mView.loadUrl("http://www.baidu.com");        mView.getSettings().setJavaScriptEnabled(true);        mView.setWebViewClient(new WebviewClient());                                                                                                                                                                                                                                                                                                                                                                                             //设置button的监听事件,当button按下时,我们关闭Activity        mButton.setOnClickListener(new OnClickListener() {                                                                                                                                                                                                                                                                                                                                                                                                     @Override            public void onClick(View v) {                // TODO Auto-generated method stub                M_Webview.this.finish();            }        });    }    //这个就是实现在程序中打开一个新的连接,还停留在这个程序中    private class WebviewClient extends WebViewClient{        @Override        public boolean shouldOverrideUrlLoading(WebView view, String url) {            // TODO Auto-generated method stub            view.loadUrl(url);            return super.shouldOverrideUrlLoading(view, url);        }                                                                                                                                                                                                                                                                                                                                                                                         }}

然后就是我们的配置文件,配置文件其实没什么,里面就是一个Webview和一个Button

        

AndroidManifest.xml这个文件是个重要的文件,里面有几个配置是必须的,我们后来新建了一个Activity,所以必须要在这里体现出来,然后我们要人我们的程序必须有联网权限,代码如下:

<?xml version="1.0" encoding="utf-8"?>                                                                                                            


现在我们在Eclipse这边的代码部分基本上都完成了,接下来我们要将我们的程序都打包成jar文件(这个将在我们的unity中将会用到,这就是我们说的所谓的插件)。我们运行windows下面的终端,从终端进入我们的OpenWebView工程,进入OpenWebView->bin->classes文件夹下,我们执行命令:

jar -cvf class.jar *  然后在classes文件夹下面将会生成一个class.jar文件,我们先将它拷贝到桌面上,除了这个文件我们还要拷贝两个文件,一个是工程下面的AndroidManifest.xml文件和res文件,好了Eclipse这边算是完成了,我们现在确保桌面上有三个文件,class.jar ,res,AndroidManifest.xml。


   现在我们来到unity下面,在写程序之前,我们要做些准备工作。首先,新建一个Unity工程,在工程的Assets文件夹下面新建一个文件夹,名字必须是Publigs,然后在Publigs文件夹下面新建一个Android文件夹。ok,现在我们将我们放在桌面上的三个文件放到Android文件夹下面。准备工作做好了。接下来就是编程写代码了。我们新建一个c#文件,名字叫做OpenWebview

using UnityEngine;using System.Collections;public class OpenWebView : MonoBehaviour {                                                                                                                    void OnGUI(){        if(GUI.Button(new Rect(100,100,100,30),"OpenWebView")){            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");            AndroidJavaObject jo = jc.GetStatic("currentActivity");            jo.Call("OpenWeb");        }    }}


   在这里要说明几点啊,jo.call("OpenWeb");这个就是调用我们的Android程序了,在我们编译运行之前我们要配置我们的Unity,第一点Bundle Identifier这个必须要和我们的Android的包名称相同,我这里是com.cheng.jack  ,第二点unity设置中的最低版本和Android设置中的最低版本要相同(这点让我纠结了好长时间)。

然后运行就ok了,这里上两张效果图。




最后附上工程地址

http://down.51cto.com/data/861687

更多相关文章

  1. Android(安卓)NDK 异常 Error:No toolchains found in the NDK t
  2. Android-ListView中嵌套(ListView)控件时item的点击事件不起作用
  3. Uni-app Android(安卓)离线打包集成 uni-push(个推)消息推送
  4. Dex2Oat源码流程(1)——Android6.0
  5. 关于android的设备管理器-DevicePolicyManager(二)
  6. Android学习备忘021——FBReader源码修改package name
  7. React Native获取移动设备信息(react-native-device-info)如何使
  8. android在线预览office
  9. Android(安卓)开发最佳实践--转自Git

随机推荐

  1. Android编译打包-gradle task 的依赖
  2. Android进度条学习一
  3. Android Activity的生命周期及四种启动模
  4. android截取屏幕图片
  5. Android获取网络图片并显示的方法
  6. Error:Failed to resolve: com.android.s
  7. Android SDK官方下载地址及在线SDK网址
  8. 判断用户使用的是 Android 手机还是平板
  9. android keyboard keycode
  10. 企业级Android Application Activity管理