【问题标题】:Launching Android Applications through Unity / Java plugins通过 Unity / Java 插件启动 Android 应用程序
【发布时间】:2014-08-19 21:54:05
【问题描述】:

我正在尝试通过插件将我的 Unity 项目连接到 Java 以启动另一个应用程序,但尝试这样做没有成功。

统一(C#):

public void AndroidCallNonStatic() {
    using (AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
        using (AndroidJavaObject activity = javaClass.GetStatic<AndroidJavaObject>("currentActivity")) {
            object[] targs = new object[1] { "org.mozilla.firefox" };
            activity.Call("nonStaticMethod", targs);
        }
    }
}

Java(安卓):

import com.unity3d.player.UnityPlayerActivity;
public class Main extends UnityPlayerActivity {

    public static Context mContext;
    public static PackageManager mManager;

    @Override
    protected void onCreate(Bundle bundle)
    {
            super.onCreate(bundle);
            mContext = this;
            mManager = getPackageManager();
    }

    public void nonStaticMethod(String s)
    {
            Log.d("TAG","nonStatic method was called");
            launchApp(s);
    }

    public static void StaticMethod(String s)
    {
            Log.d("TAG","Static method was called " + s);
            launchApp(s);
    }

    public void launchApp(String packageName)
    {
        Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
        if (intent != null)
        {
            // Activity was found, launch new app
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
        else
        {
            // Activity not found. Send user to market
            intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("market://details?id="+packageName));
            startActivity(intent);
        }
    }

}

谁能帮我解决这个问题?我已经用尽了我的 Android/Unity 知识,无法理解为什么它不起作用。我的想法是它与包名有关。

【问题讨论】:

  • Unity 是给你一些错误,还是只是没有找到插件?
  • @dudeprgm Unity 给我一个空指针异常的错误,但插件本身正在被发现。我觉得这没有启动的原因是因为我需要知道要启动的活动的实际名称。我正在运行更多测试,看看我是否可以启动更容易集成的 Google 相机或图库。

标签: java c# android unity3d


【解决方案1】:

您可以直接在 C# 中从 Unity 启动 Android 应用程序:

public void LaunchApp(String packageName)
{
    AndroidJavaClass unityPlayer;
    AndroidJavaObject currentActivity;
    AndroidJavaObject packageManager;
    AndroidJavaObject launchIntent;

    unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
    launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName);
    currentActivity.Call("startActivity", launchIntent);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2023-03-17
    相关资源
    最近更新 更多