启动活动的Intent extra不会更新

时间:2017-10-19 05:14:35

标签: android android-intent

我在同一台设备上有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;
    }
}

似乎意图的额外内容永远不会更新。几个星期以来,我一直在努力。请帮帮我。

1 个答案:

答案 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 方法来获取特定值。

干杯。