[英]Launching Activity with extra attached to Intent in Instrumented test, running on espresso and JUnit 5
[英]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.