【发布时间】: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”的额外意图的值。