Vla*_*zki 28 android intentfilter android-intent
首先,我的问题非常类似于此,这个和这个.我想要实现的Android文档就在这里.我无法使用这些资源来使用它,所以请不要将其标记为重复,因为它不是.
我有一个网站和一个Android应用程序.用户将能够扫描包含http://mywebsite.com/map/等链接的QR码.当用户尝试打开此链接时,我希望Android向他显示一个选择器对话框,他可以选择使用我的应用程序打开该链接.如果我的应用程序没有安装,它应该进入指定的网站.
我知道当用户导航到该地址时,Chrome会通过打开选择器对话框来实现此目的.例如,尝试下载Stack Exchange应用程序并在Chrome中转到此问题.它会显示:

按照上述答案中的建议后,我在AndroidManifest.xml中添加了以下代码:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="mywebsite.com"
android:path="/map"
android:scheme="http" />
<data
android:host="mywebsite.com"
android:path="/animals"
android:scheme="http" />
<data
android:host="mywebsite.com"
android:path="/articles"
android:scheme="http" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
另外,我尝试将android:mimeType ="text/plain"添加到数据中,但它没有帮助.
问题是,当我访问http://mywebsite.com/map或http://mywebsite.com/map/时, Chrome只会打开网页而不显示选择器对话框.
我想提一下:
And*_*cko 61
你需要像这样设置它:
<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="example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
<data
android:host="www.example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
请注意,在您的情况下,您需要使用android:pathPrefix而不是android:path.
只是为了确保您应该重置应用程序的首选项,以防您不小心将其设置为始终打开chrome中的链接而不是显示选择器对话框.一旦"Always"用于打开匹配的uri,它将永远不会显示选择器.
其次,您可以根据需要在intent过滤器中包含尽可能多的数据元素,但不必重复信息.你可以这样做:
<data android:host="mywebsite.com"/>
<data android:scheme="http"/>
<data android:path="/map"/>
<data android:path="/animals"/>
<data android:path="/articles"/>
Run Code Online (Sandbox Code Playgroud)
但请注意,对于路径,您只需使用通配符即可
<data android:path="/.*"/>
Run Code Online (Sandbox Code Playgroud)
考虑添加一个额外的
<data android:host="www.mywebsite.com"/>
Run Code Online (Sandbox Code Playgroud)
最后,您可能不想显示选择器对话框,而是直接打开特定的应用程序意图/活动.在您的网站上,如果您检测到Android用户代理,您可以通过以下方式创建链接URL:
<a href="intent://mywebsite.com/articles#Intent;package=com.myapp;scheme=http;end;"/>
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此处如何从Android中的Web浏览器(Chrome)打开任何应用程序?我如何处理A Href链接?
请注意,使用此方法,如果未安装该应用,则系统会将用户带到指定应用包的Google Play商店.
如果仍有问题,请检查您的意图过滤器优先级.http://developer.android.com/guide/topics/manifest/intent-filter-element.html
| 归档时间: |
|
| 查看次数: |
36820 次 |
| 最近记录: |