我按照https://developer.android.com/training/app-indexing/deep-linking.html上的说明进行操作,但是当我想通过 adb
触发意图时:
adb shell am start
-W -a android.intent.action.BROWSEABLE
-d "http://example.com/gizmos" com.myapp.android
我得到了
错误:活动未启动,无法解析Intent
<activity
android:name=".activities.DeepLinkActivity"
android:label="@string/title_activity_deep_link">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
<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="http"
android:host="example.com"
android:pathPrefix="/gizmos" />
</intent-filter>
</activity>
我有任何明显的错误吗?
11 回答
EDIT:
好的,首先确保adb可以访问您的包:
然后要接受多个数据标签,您需要不同的意图过滤器(在网上看到的).1405955_ . 例如 . :
NOTE 在上面的例子中,pathPrefix以正斜杠开头!
我不确定为什么Google的文档会如此误导,或者可能是因为某些不同版本的adb,但上述更改对我来说非常合适 . 这有助于:Source
这就是我将Chrome浏览器路由指向我的应用的特定链接:
NOTE 第一个过滤器适用于Google Chrome,第二个适用于ADB .
NOTE2 应用程序选择菜单赢得了't be shown if the link is entered into the browser'的地址栏 . 它 has 是一些页面中的
<a href="http://example.com"></a>
链接 .在我看来,这里的一切都相当模糊,而且我的预期并非如此 . 但这就是它在我的设备上的工作方式 . 希望这对你有帮助(也有效) .
经过一些测试后,这对我有用:
单击浏览器中的任何链接(例如“http://www.example.com ", " http://www.example.com/ " or " http://www.example.com/whatever ". The same with " myschema:// example / whatever”)时,此方法有效 .
也可以使用此命令(包含任何这些URL)与
adb
一起使用:希望有助于您入门 .
当一切正常时,您可能希望为不同的活动配置不同的
pathPrefix
.就我而言,我在MainActivity中加入了深层链接意图过滤器,MainActivity也是主要的启动器 . 这导致了这个问题 .
在我创建另一个单独的活动并将intent过滤器放在那里之后,它解决了问题 . 希望这可以帮助那些面临同样问题的人 .
首先,在此页面上阅读@ user3249477的答案 .
我只想添加而不是他写的内容,你可以使用pathPattern来压缩它:
“ . *”匹配空字符串和“/”,因此两种情况都被覆盖 . 如果你最终试图处理多个方案和主机,这变得尤为重要,所以你不必垃圾邮件{http,https} X {“”,“/”} X {“foo”,“bar”等等}
确保您的网址采用此格式(封顶字母替换为您自己的):
adb工具不需要此格式 . 有了上面的内容,您现在可以将它放在src或href中,如下所示:
使用adb shell am start -W -a android.intent.action.VIEW -d“http://example.com/gizmos”com.myapp.android
它会工作 .
在我的情况下,我在URL中有一个端口8075我删除它并且它工作
请改用此意图过滤器,
感谢Simas的回复,我想补充一些说明:
使用此命令测试活动后
adb shell am start -n com.example.simon.test / .activities.MainActivity
......
所以这是你可以测试的adb命令:
和
./adb shell am start -n packagename / .splash.SplashActivity -d“schemeName:// content”
如果您没有权限问题,则可能与API级别有关