在文本消息中发送的地址打开自定义映射应用程序

时间:2016-12-19 15:52:31

标签: java android geolocation

在文本消息中发送的格式正确的地址显示为链接。点击此链接后,如何让它打开我的自定义Android地图应用并自动将该地址插入我应用的搜索框?

1 个答案:

答案 0 :(得分:0)

您在谈论deep linking。您需要在清单文件中注册您希望应用程序响应的链接类型。

<activity
    android:name="app.myActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos”-->
        <data
            android:host="gizmos"
            android:scheme="example" />
    </intent-filter>
    <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:host="www.example.com"
            android:pathPrefix="/gizmos"
            android:scheme="http" />
        <!-- note that the leading "/" is required for pathPrefix-->                
    </intent-filter>
</activity>

您甚至可以模拟亚行的深层链接:

  

adb shell am start -W -a android.intent.action.VIEW -d“example:// gizmos”

     

adb shell am start -W -a android.intent.action.VIEW -d“http://www.example.com/gizmos

然后,您可以读取URI数据并将其放在任何您喜欢的位置,只要这是在响应深层链接的活动中:

Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();

注意
WhatsApp不是深层链接的好地方。我仍在试图找出原因。