如何在android中测试自定义URL方案

DI *_*ers 16 android url-scheme

我正在开发需要自定义URL方案的应用程序,看起来像"appname://"

我搜索了很多东西,也找到了很多相关的问题,但我还是遇到了麻烦.

我如何从浏览器测试此URL方案?目前,每当我输入浏览器的地址栏"appname://"时,它就会直接进入谷歌搜索.

我在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="appname"
             android:host="appnamehost"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

rek*_*ire 39

这很容易通过adb.检查此命令:

adb shell am start -a android.intent.action.VIEW -d "appname://appnamehost" your.package.name
Run Code Online (Sandbox Code Playgroud)

但是,您应该将包名称用作架构.因此,您可以绝对确定没有冲突(或详细的意图选择器).

如果您有多个设备,则需要执行adb devices.这将产生如下输出:

List of devices attached
1645e1d0b86b    device
S9WM00904386    device
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用上面的id来使用-s参数来解决具体设备.这将导致命令行如下:

adb -s S9WM00904386 shell [...]
Run Code Online (Sandbox Code Playgroud)

如果是浏览器链接,这也很容易.你只需要添加这行html:

<a href="appname://appnamehost">Click me</a>
Run Code Online (Sandbox Code Playgroud)

如果你想在你的网址中回退你可以尝试意图网址:

<a href="intent://apphostname#Intent;scheme=appname;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>
Run Code Online (Sandbox Code Playgroud)

这将打开您的应用程序,即使您的架构不是唯一的,如果您没有安装应用程序,它将打开example.com.

  • 谢谢Rekire,通过从jsfiddle制作html并在移动浏览器上运行,它运行正常.:) (5认同)