[√]Android webview的url scheme

简介: [√]Android webview的url scheme

当我们使用移动应用时,我们通常会通过点击链接或按钮来跳转到其他页面或应用。

向应用程序传递参数


         
window.location.href = "mailto:user@example.com";

可以复现的demo

<a href="test://app">Scheme</a>

image.png

  • Cocos2dxWebView.java
public boolean shouldOverrideUrlLoading(WebView view, final String urlString) {
    // 用来实现url拦截:true拦截、false不拦截,如果要重定向,再次调用view.loadUrl()即可
    // urlString收到的内容如下
    // intent://forms.gle/LfrgUveEipbu42uE8
    // #Intent;
    // package=com.google.android.gms;
    // action=com.google.firebase.dynamiclinks.VIEW_DYNAMIC_LINK;
    // scheme=https;
    // S.browser_fallback_url=
    // https://docs.google.com/xxx
    // ;end;
} 

这个intent其实是google play的服务,如果要使用,必须声明intent

  • AndroidManifest.xml
<activity>
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
    </intent-filter>
</activity>

intent-filter

在 Android 开发中,intent-filter 是一个用于指定活动(Activity)、服务(Service)或广播接收器(Broadcast Receiver)能够处理哪些意图(Intent)的声明。通过在清单文件(Manifest file)中使用 intent-filter,可以使应用程序响应特定类型的意图,从而实现与其他组件的交互和通信。

intent-filter 声明的示例:

<activity android:name=".MyActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="http" />
    </intent-filter>
</activity>

intent-filter 声明了一个活动(MyActivity),它能够处理一个 VIEW 意图,并且指定了对应的数据类型为 HTTP。这意味着当系统收到一个 VIEW 意图来查看某个网页时,这个活动将被启动并处理该意图。

intent-filter 可以通过以下几个元素来定义:

<action>

指 Intent 发向的组件的主要动作,比如:图片应用中主要动作为查看图片的组件、地图应用中主要动作为查看地址的组件。另外,对于广播(Broadcast)组件而言,Intent 的 action 则是指广播具体的值。当 Broadcast Receiver 接收到该值时代表了某事件已经发生。

通常使用的主要是 Android 系统内置 action,这些 action 实际上是保存在 Intent 类中的静态常量,系统的默认组件(如:默认浏览器、图片浏览器、拨号页面等)都可以响应相应的 action。

<category>

目标组件的类型信息字符串,一个 Intent 可以添加多个 Category 。

<data>

包含了 URI 对象和 memitype 两个部分,分别是待操作数据的引用 uri,以及待操作数据的数据类型。两部分均为可选,但是要注意同时设置时应该使用 setDataAndType()方法,防止互相抵消。

Data 内容一般由 action 决定,比如 action 为 ACTION_VIEW,那么 Data 就可以是一个网址,也可以是图片之类的数据 uri。

同时指定 Uri 和 MIME 类型有助于 Android 系统找到接收 Intent 的最佳组件,例如可以响应 ACTION_VIEW 的组件可能有非常多,浏览器、播放器、图片应用等等。此时设置mimeType"image/jpeg"或者video/mp4,则系统可以筛选出更合适的响应组件。

通常情况下,需要根据需求为组件添加适当的 intent-filter 来定义它所能处理的意图。这样,当其他应用程序发送对应类型的意图时,系统就会将其分发给相应的组件。一个组件可以有多个 intent-filter 声明,以便处理不同类型的意图。

intent-filter 只能在清单文件中声明,用于将应用程序的组件公开给其他应用程序或系统使用。

目录
相关文章
|
4月前
|
存储 缓存 Android开发
安卓Jetpack Compose+Kotlin, 使用ExoPlayer播放多个【远程url】音频,搭配Okhttp库进行下载和缓存,播放完随机播放下一首
这是一个Kotlin项目,使用Jetpack Compose和ExoPlayer框架开发Android应用,功能是播放远程URL音频列表。应用会检查本地缓存,如果文件存在且大小与远程文件一致则使用缓存,否则下载文件并播放。播放完成后或遇到异常,会随机播放下一首音频,并在播放前随机设置播放速度(0.9到1.2倍速)。代码包括ViewModel,负责音频管理和播放逻辑,以及UI层,包含播放和停止按钮。
|
2月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
90 12
|
2月前
|
Shell Android开发
安卓scheme_url调端:在AndroidManifest.xml 中如何配置 Intent-filter?
为了使Android应用响应vivo和oppo浏览器的Deep Link或自定义scheme调用,需在`AndroidManifest.xml`中配置`intent-filter`。定义启动的Activity及其支持的scheme和host,并确保Activity可由外部应用启动。示例展示了如何配置HTTP/HTTPS及自定义scheme,以及如何通过浏览器和adb命令进行测试,确保配置正确无误。
|
2月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
4月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
4月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
3月前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
51 0
|
4月前
|
Web App开发 移动开发 前端开发
52. 【Android教程】网页视图:WebView
52. 【Android教程】网页视图:WebView
58 1
|
4月前
|
安全 网络安全 API
kotlin安卓开发JetPack Compose 如何使用webview 打开网页时给webview注入cookie
在Jetpack Compose中使用WebView需借助AndroidView。要注入Cookie,首先在`build.gradle`添加WebView依赖,如`androidx.webkit:webkit:1.4.0`。接着创建自定义`ComposableWebView`,通过`CookieManager`设置接受第三方Cookie并注入Cookie字符串。最后在Compose界面使用这个自定义组件加载URL。注意Android 9及以上版本可能需要在网络安全配置中允许第三方Cookie。
|
5月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
54 0