簡體   English   中英

啟動活動的Intent Extra未更新

[英]Launching activity's Intent extra is not updated

我在同一設備上有2個應用。 一個在unity3D中,另一個在android studio中。 我的統一代碼沒有獲得更新的意圖附加功能,而是獲得了最初啟動該應用程序的意圖的附加功能。 如果統一應用程序已在后台運行,則永遠不會更新統一意圖。

我想將更新的intent.extra從android應用程序更新為unity應用程序。 我該怎么做?

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

似乎intent的附加功能永遠不會更新。 我為此奮斗了數周。 請幫我。

我無法很好地回答Android App,因為我們使用了帶有插件的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方法來獲取特定值。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM