Android的GEO-URI意图过滤器

6

我尝试编写一个活动,作为谷歌地图的替代品。当通过谷歌地图的URL调用它时,它可以完美地工作:

<activity android:name="DataActivity" android:label="@string/app_name">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <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" />
  </intent-filter>
</activity>

但是出于某些原因,当使用“geo” URI 启动 Intent 时,它并没有显示出来。

我的 Activity:

<activity android:name="DataActivity" android:label="@string/app_name">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="geo" android:host="*" />
  </intent-filter>
</activity>

调用者(这将启动Google Maps,但不会启动我的应用程序):

final String uri = "geo:" + lat + "," + lng;
startActivity(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)));

你的应用程序如何解析Geo URI以获取位置数据? - Radon8472
2个回答

13

尝试使用

<intent-filter android:priority="0">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="geo"/>
</intent-filter>

优先级已过时 - cV2

8

添加多个计划的正确方法:

        <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="geo"/>
        </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:scheme="google.navigation"/>
        </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="maps.google.com"
                android:scheme="https"/>
        </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="maps.google.com"
                android:scheme="http"/>
        </intent-filter>

maps.google.com在http和https上对我来说都无法工作,有没有已知的问题,我使用的是带有6.0.1最新安卓系统的S7手机...只有我的应用程序完全无法触发... - cV2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接