我在同一台设备上有2个应用。一个在unity3D和其他android studio中。我的统一代码没有得到更新的意图附加,而是获得最初启动应用程序的意图的额外意图。如果统一应用程序已在后台运行,则统一中的额外意图永远不会更新。
我想从android app到Unity app更新intent.extra。我该怎么办?
android studio代码:
public class MainActivity extends AppCompatActivity {
public void sendMessage(View view) {
getPackageManager().getLaunchIntentForPackage("com.amali.UnityApp").setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.amali.UnityApp");
if (launchIntent != null) {
launchIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK );
String s = "hello " + incrementedstring; //updating the string passing to unity app
launchIntent.putExtra("arguments", s);
Bundle extras= launchIntent.getExtras();
Log.d(TAG, extras.getString("arguments")); //this prints correctly
startActivity(launchIntent);
}
}
统一代码:void GetAndroidAppArguments()
{
string arguments = "";
try
{
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent");
bool hasExtra = intent.Call<bool>("hasExtra", "arguments");
if (hasExtra)
{
AndroidJavaObject extras = intent.Call<AndroidJavaObject>("getExtras");
arguments = extras.Call<string>("getString", "arguments");
debugLog.text = arguments;
}
}
catch (Exception ex)
{
debugLog.text = ex.Message;
}
}
似乎意图的额外内容永远不会更新。几个星期以来,我一直在努力。请帮帮我。
答案 0 :(得分:0)
我无法很好地回答Android应用程序因为我们使用带有插件的Cordova来发送附加内容(名为 varName 的var)。但我们在Unity应用程序中遇到了问题。在我们的案例中,这完美地运作:
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent");
String text = intent.Call<String> ("getStringExtra", "varName");
问题是我们尝试了你的代码,但我们没有得到任何东西。过了一会儿,我们注意到 Call 调用Java方法,因此我们尝试使用 getStringExtra 方法来获取特定值。
干杯。