これは簡単な質問のように思えますが、インターネット上で具体的な答えを見つけることができませんでした。私はこの非常によく似た質問をstackoverflowで見ました: nityアプリケーションをAndroid activity? から開始する方法ですが、私の質問とは正反対です。さらにAndroidアクティビティは、PCで別のプログラムを起動するために行引数を使用してsystem()呼び出しを使用するのと同じように、Unityアプリケーションからいくつかの入力文字列を受信できる必要があります。
以下は、Android上のテストUnityアプリのテストボタンイベントハンドラー用に持っているコードです。
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");
}
}
Unity Editorを使用してテストする場合、テストボタンをクリックすると、アプリケーションはNotepad ++。exeを正常に開きます。しかし、Samsung Galaxy S2デバイスで「インターネット」アプリを開こうとすると、失敗しました。これが事実である理由を誰かが知っていますか? Process.Startを使用して別のAndroidアプリケーションを開くための正しい文字列は何ですか?
私はUnityにはあまり詳しくありませんが、Android=の経験が豊富です。ですから、私の答えを信頼できる答えではなく、提案として受け取ってください。
Launching nity内からのAndroidアプリケーション を見ると、次のことを試すことができます。
nityと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);
}
}
unityコードを変更します。
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メッセージを投稿してください。
これを試してくださいこのLaunch()メソッドを静的に変更し、Android Javaオブジェクト、つまり「jo」を以下のように渡します。
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);`
launch()メソッドを次のように変更します。
public static Launch(Activity activity)
{
Intent myIntent = new Intent();
activity.startActivity(myIntent);
}
それが役立つことを願っています。