简体   繁体   English

在Unity3D中集成.jar文件

[英]Integrating .jar file in Unity3D

I have created a sample android project with a single acitivity of name "MainActivity", and I have created a simple static and a non-static functions in this activity. 我创建了一个示例活动的android项目,名称为“ MainActivity”,并且在此活动中创建了一个简单的静态和非静态函数。 Then I converted this project into LibraryProject, so I found the jar file of this project in its bin folder. 然后,我将该项目转换为LibraryProject,因此在其bin文件夹中找到了该项目的jar文件。 When I copy this .jar file and AndroidManifest.xml file in Unity's Assets/Plugins/Android folder. 当我将这个.jar文件和AndroidManifest.xml文件复制到Unity的Assets / Plugins / Android文件夹中时。 Neither the static nor non-static function is getting called. 静态和非静态函数都不会被调用。

using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
    {
        using (AndroidJavaObject obj_Activity = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
        {
            obj_Activity .CallStatic("showMap");
        }
    }

Android Code is Android代码是

public class MainActivity extends UnityPlayerActivity {

    com.google.android.gms.maps.MapView mapView;
    String apiKey="AIzaSyA-CxbAb1fA7QLJEvq1eSCSvHq9zh1mgEI";
    static WebView view;
    static LinearLayout layout;
    public static Context context;
    static LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
      layout = new LinearLayout(this);       
    setContentView(layout);
    context=this;
}


public static void showMap()
{
    Log.d("looter", "google.com");
     view=new WebView(context);
     view.setLayoutParams(params);


     view.setWebViewClient(new WebViewClient() {
         public boolean shouldOverrideUrlLoading(WebView view, String url) {
           //  Log.i(TAG, "Processing webview url click...");
             view.loadUrl(url);
             return true;
         }

         public void onPageFinished(WebView view, String url) {
             //Log.i(TAG, "Finished loading URL: " +url);

         }

         public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

         }
     });
     view.loadUrl("http://www.google.com");
     layout.addView(view);
}

I suspect your issue could be to do with this line: 我怀疑您的问题可能与以下内容有关:

using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))

I suspect the class is returning the Unity class NOT your overridden class or it may be returning that class but saving the base class as it's value. 我怀疑该类返回的是Unity类而不是您覆盖的类,或者它可能正在返回该类,但将基类保存为值。 Try finding your activity class by using your package id. 尝试使用您的包裹ID查找您的活动类别。 eg com.yourcompanyname.yourClassName. 例如com.yourcompanyname.yourClassName。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM