如何启动从Unity应用程序在Android的活动?(How to start an Android

2019-07-28 20:59发布

我知道这似乎是一个微不足道的问题,但我不能在互联网上的任何地方找到任何具体的答案。 我看到这个计算器非常类似的问题: 如何开始从Android的活动Unity应用? 但它是我的问题正好相反。 此外,该机器人活动必须能够接收来自Unity应用一些输入字符串很像一个使用system()如何与行参数来调用启动PC上的其他程序。

以下是我对在Android上我的测试程序统一测试按钮事件处理程序的代码:

private void ExternalAppCallHandler()
{
    if(Application.platform == RuntimePlatform.WindowsEditor)
    {
        Process.Start(@"C:\Program Files (x86)\Notepad++\notepad++.exe");
    }
    else if(Application.platform == RuntimePlatform.Android)
    {
        Process.Start("Internet");
    }
}

当我使用统一编辑器来测试,该应用程序成功打开记事本++。exe文件,当我点击测试按钮。 然而,当我试图打开我的三星Galaxy S2设备上的“互联网”应用程序失败。 没有人知道为什么是这样的情况? 应该是什么打开使用的Process.Start其他Android应用正确的字符串?

Answer 1:

我不是很熟悉,统一,但有Android体验了相当数量。 所以,把我的答案被提出的建议,而不是一个权威的答案。

纵观启动一个从内部团结的Android应用程序 ,你可以尝试以下方法:

按照在指南与Eclipse集成统一 。

修改如下步骤1中创建Java文件:

package com.Unity3D.EclipseIntegration;

import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

public class EclipseIntegration extends UnityPlayerActivity {

    private 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 Launch()
    {       
        startActivity(myIntent);
    }
}

并修改您的统一编码:

private void ExternalAppCallHandler()
{
    if(Application.platform == RuntimePlatform.WindowsEditor)
    {
        Process.Start(@"C:\Program Files (x86)\Notepad++\notepad++.exe");
    }
    else if(Application.platform == RuntimePlatform.Android)
    {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("Launch");
    }
}

如果你正面临的任何问题,请张贴logcat的消息。



Answer 2:

试试这个更改此启动()方法,以静态和通过Android Java对象即。 “乔”给它象下面。

AndroidJavaClass androidJC = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo= androidJC.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass jc = new AndroidJavaClass("package_name.Ur_Actvity_Name");
jc.CallStatic("Launch",jo);`

和改变发射()方法:

public static Launch(Activity activity)
{
 Intent myIntent = new Intent();
 activity.startActivity(myIntent);
}

希望这将有助于。



文章来源: How to start an Android activity from a Unity Application?