android:scheme不能在我的设备上运行

时间:2012-04-20 13:01:29

标签: android url-scheme

我有一个自定义链接:callnumber:// 12345

我希望通过以下方式捕获此链接的点击事件:

<activity android:name=".Test"
                  android:label="@string/app_name">
    <intent-filter>
    <data android:scheme="callnumber"/>
        <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

我在很多设备上测试过:三星Galaxy S2,三星Galaxy 2,摩托罗拉XT720 它运行得很好但是在HTC Sensation Z710e上,它没有用。

我发现在HTC Sensation Z710e上,该链接变为http://www.callnumber.com//并用浏览器打开。

我把我的意图过滤器改成了这样,它起作用了:

<intent-filter>
    <data android:scheme="http" android:host="www.callnumber.com"/>
        <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

但我不想捕获http方案,因为当它从自定义更改为http方案时很容易丢失数据。

示例:如果我的链接是callnumber:// 12345#,它将变为http://www.callnumber.com//12345,它丢失了我的角色'#'

或者,如果我的链接是callnumber:// 12345#34567,它将变为http://www.callnumber.com//12345,它丢失了我的'#34567'

使用上面的Android设备列表(除了HTC Sensation Z710e),它会返回我想要的数据。

那么如何捕获所有Android设备的自定义方案,或者至少对于HTC Sensation Z710e?

非常感谢,

1 个答案:

答案 0 :(得分:0)

添加数据行如下:

<data android:host="*" android:scheme="callnumber" />