用于GEO-URI的Android Intent过滤器

时间:2010-12-06 17:09:40

标签: android intentfilter

我尝试编写一个Activity作为谷歌地图的替代品。 当通过google-maps网址调用它时,它的工作非常完美:

<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 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地图而无法启动我的应用):

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

2 个答案:

答案 0 :(得分:11)

尝试

<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>

答案 1 :(得分:7)

添加多个方案的正确方法:

        <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>