我正在尝试通过插件将我的 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 知识,但无法理解为什么它不起作用。我的想法是它与包名称有关。
最佳答案
您可以直接在 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);
}
关于java - 通过 Unity/Java 插件启动 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25393600/