首先请注意,我正在使用Xamarin for Android,因此Android Java存在轻微的语法差异。我正在从我自己的Android应用程序中的活动启动谷歌地图应用程序。我已经想出了如何依次通过转向导航模式启动它,提供语音引导方向,跳过它通常默认的常规活动。但是,默认的地图活动确实会非常短暂地出现,然后再转向活动。我可以忍受这一点。
挑战在于用户必须多次点击后退按钮才能返回我的应用,而不是一次又一次从转弯活动开始,直接返回我的应用,是我更喜欢的。我知道它为什么这样做而且很自然。 我的应用有什么方法可以在语音导航模式下启动地图,但是在后台启动它可以让我的应用保持在前台吗?
我已经看到如果我使用我的后退按钮返回我的应用程序,则转弯的语音方向停止。如果我使用手机底部的窗口图标查看我最近的所有应用程序,并在启动地图应用程序后将其带到前台,语音指示仍在继续,这就是我想要的,它甚至可以让我通知覆盖在我的上方应用程序很棒。当他想将我的应用程序带到前台时,我不想告诉用户使用该窗口图标,我不希望他使用后退按钮,因为它会停止语音指示。所以这是一个艰难的地方,如果这只是你必须接受的电话行为之一,我不会感到惊讶,但我希望任何人都可以提供任何建议。 甚至可能让它成为片段应用程序的一部分?但是,我只是得到他们的地图,还是我会得到完整的语音指示功能?我认为我只能从他们安装的应用程序,而不是他们的库中获得。谢谢你的阅读。
这是我当前的代码
public void StartNavigation(string lat, string lng)
{
String strUri = "google.navigation:q=" + lat + "," + lng;
Intent Intent = new Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(strUri));
//Intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
Intent.SetPackage("com.google.android.apps.maps");
Application.Context.StartActivity(Intent);
}
答案 0 :(得分:2)
也许您可以使用Intent标志来解决这个问题,以更改Google Maps Activity的启动模式。
尝试使用FLAG_ACTIVITY_NEW_TASK标志。 e.g:
String strUri = "google.navigation:q=" + lat + "," + lng;
Intent intent = new Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(strUri));
//Intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
Intent.SetPackage("com.google.android.apps.maps");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Application.Context.StartActivity(Intent);
答案 1 :(得分:1)
启动Google地图几秒钟后,为您自己的应用启动启动器意图,将其恢复到前台。您可能需要使用警报。