android - 协调启动其他应用程序的意图

Posted

技术标签:

【中文标题】android - 协调启动其他应用程序的意图【英文标题】:android - coordinates intent to launch other apps 【发布时间】:2019-05-31 19:49:33 【问题描述】:

我想从我的应用分享坐标,我想让我的用户选择另一个 gps 应用并启动它们。 我有这个代码,但它只打开谷歌地图,我想让我的用户能够选择一个应用程序

    Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
    Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);

我该怎么做?

【问题讨论】:

如果您可以直接将它作为逗号分隔的字符串共享为 text/plain 并添加可以处理它的意图。它应该可以工作。 How to open standard Google Map application from my application?的可能重复 【参考方案1】:

如果您想要一个选择器,它将向用户提供其设备中所有带有地图的应用程序,请尝试以下解决方案:

    在清单中添加 data android:scheme="geo",但将意图过滤器分为 2 部分,如下所示:

代码:

<intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
     <intent-filter>
      <action android:name="android.intent.action.VIEW" />
                    <data android:scheme="geo" />
     </intent-filter>

之后,您可以使用地理链接。

    在按钮点击或任何地方创建意图:

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));```
    

这应该向用户提供他已安装的所有地图应用程序(Google、Waze、Locus 等)。它还显示地图上的坐标,Waze 也会自动计算路线。

如果用户没有任何地图应用程序,您还应该注意这种情况,创建一些异常。

【讨论】:

以上是关于android - 协调启动其他应用程序的意图的主要内容,如果未能解决你的问题,请参考以下文章

Android5.0隐式启动服务

如何让 Spotify 和其他 Android 音乐应用根据意图进行搜索和播放?

Android - 相机和画廊意图后的裁剪给出了奇怪的结果

使用 android 意图开始导航

应用程序启动时的视图协调器:我应该使用视图控制器还是其他东西?

在其他应用中启动另一个 Activity 时需要帮助修复权限错误