【问题标题】:Launching activity's Intent extra is not updated启动活动的 Intent extra 未更新
【发布时间】:2018-06-02 01:29:57
【问题描述】:

我在同一台设备上有 2 个应用程序。一个在unity3D中,另一个在android studio中。我的统一代码没有获得更新的意图附加信息,而是获得了最初启动应用程序的意图的附加信息。如果统一应用程序一直在后台运行,则统一中的额外意图永远不会更新。

我想将更新后的 intent.extra 从 android 应用程序获取到 unity 应用程序。我该怎么做?

android工作室代码:

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;
    }
}

intent 的附加功能似乎永远不会更新。我为此苦苦挣扎了好几个星期。请帮帮我。

【问题讨论】:

  • 为什么要调用 onNewIntent()?与开始活动有什么关系?什么是“更新意图”?
  • “最初启动应用程序的意图”是什么意思?哪个应用?
  • public void sendMessage() 公开?为什么要公开?
  • setIntent() 应该做什么?
  • 1.对于不明确的声明,我很抱歉。我想更新名为“arguments”的额外意图的值。

标签: android android-intent


【解决方案1】:

我不能很好地回答 Android 应用程序,因为我们使用带有插件的 Cordova 来发送额外内容(一个名为 varName 的变量)。但是我们在 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 方法来获取具体的值。

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多