在C#/Unity中启动外部android应用程序

本文关键字:外部 android 应用程序 启动 Unity | 更新日期: 2023-09-27 18:27:01

所以我已经被这个问题困扰了好几天了。我已经将Unity与Eclipse IDE集成在一起,我可以完美地构建和部署项目。然而,我试图在java端启动一个基本的Intent,并在Unity/C#端触发它。

以下是我在Java方面的代码:

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerNativeActivity;
public class AppLauncher extends UnityPlayerNativeActivity 
{
    public  Intent myIntent;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        //Assuming that we want to launch the browser to browse a website
        Uri uri = Uri.parse("http://www.google.com");
        myIntent= new Intent(Intent.ACTION_VIEW, uri);
    }
    public void Trigger()
    {       
        startActivity(myIntent);
    }
}

以下是当C#触发器被击中时,logcat抛出的错误:

这是我在if-it的C#端的代码:

if(s[0].Equals("Spr"))
{
    print("Launched");
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    jo.Call("Trigger");
}

以下是当C#触发器被击中时,logcat抛出的错误:

AndroidJavaException: java.lang.NoSuchMethodError: no method with name='Trigger' signature='()V' in class Lcom/unity3d/player/UnityPlayerNativeActivity;

我试着在C#脚本中传递一个自定义签名和Trigger方法名称,我试着扩展标准的UnityPlayerActivity等等……我试了几个小时的东西,但我似乎无法解决这个问题。

我们非常接受任何帮助!

在C#/Unity中启动外部android应用程序

您确定您的活动已创建吗?你真的需要延长活动时间吗?我会试试这样的东西:

Java:

package my.package;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
public class AppLauncher 
{
    public static void Trigger()
    {     
        //Assuming that we want to launch the browser to browse a website
        Uri uri = Uri.parse("http://www.google.com");
        Intent myIntent= new Intent(Intent.ACTION_VIEW, uri);  
        startActivity(myIntent);
    }
}

C#:

AndroidJavaObject jo = new AndroidJavaObject("my.package.AppLauncher");
jo.CallStatic("Trigger");