【问题标题】:Android, when opening shared location, my map not visible in system choisesAndroid,打开共享位置时,我的地图在系统选择中不可见
【发布时间】:2016-09-01 05:42:31
【问题描述】:

例如,在 whatsapp 中有人发送自己的位置,当我们点击消息系统打开选择对话框时,地图应用程序可以打开位置,如谷歌地图、yandex 地图等。我希望我的地图应用程序也在那里。换句话说,我希望该系统将我的应用程序识别为地图应用程序,并且当用户单击whatsapp 或其他应用程序中的位置时,我的应用程序会出现在系统选择对话框中。如何配置我的应用程序以打开位置?我搜索并在论坛和 android 文档中建议使用隐式意图。但他们没有展示如何配置系统选择中显示的应用程序。我听说过 mime 类型,但在文档中没有用于位置的 mime 类型。

【问题讨论】:

    标签: android google-maps dictionary android-intent mime-types


    【解决方案1】:

    您需要将intent-filter 添加到您的activity,以使其能够响应地图网址。在你的Androidmanifest.xml:

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="maps.google.com" />
        <data android:scheme="https" android:host="maps.google.com" />
        <data android:scheme="geo"/>
    </intent-filter>
    

    要检索 URI:

    protected void onCreate(Bundle savedInstanceState) {
        Intent intent = getIntent();  
        Uri data = intent.getData(); // Here you will receive the URI
    
        // ...
    }
    

    【讨论】:

    • 感谢 Antonio 的回复,这正是我想要的 )) 请告诉我如何从这个 Uri 中检索经纬度和缩放级别?
    • 你会收到一个类似http://maps.google.com/maps?q=40.3836251,-2.38361628的Uri,这意味着http://maps.google.com/maps?q=latitude,longitude
    【解决方案2】:

    Implicit Intent 更像是你的应用其他应用之类的东西,而你的目标是反向版本(其他应用 到 您的应用)。您正在寻找的是Intent Filter。根据文档:

    要允许其他应用启动您的活动,您需要在清单文件中为相应的&lt;activity&gt; 元素添加一个&lt;intent-filter&gt; 元素。

    干杯! :)

    【讨论】:

    • 感谢您的建议 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2012-12-10
    • 2019-11-27
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多