通过使用Scheme,可以实现用手机的浏览器(内置或第三方)访问一个网页,启动自己的应用,或者在一个应用使用WebView.loadUrl()方法启动另外一个应用。

实现原理

首先我们来看一下网页跳转到应用的实现原理

在Android平台而言,URI主要分三个部分:scheme, authority,path, queryString。其中authority又分为host和port。格式如下:

scheme://host:port/path?qureyParameter=queryString

举个例子:

http://www.orangecpp.com:80/tucao?id=hello

在Android的Manifest配置文件中,配置项中有配置

其中包含内容有:

android:mimeType=""

android:path=""

android:pathPattern=""

android:pathPrefix=""

android:port=""

android:scheme=""

android:ssp=""

android:sspPattern=""

android:sspPrefix=""/>

通过配置可以对网页进行过滤,符合匹配条件的网页才跳转到应用。一般只需要设置host和scheme即可。

实现步骤

下面来讲一下具体的实现步骤

1.首先我们写一个测试网页test.html

Test Scheme

Click

2.创建一个Android测试工程,修改Manifest文件,给想要接收跳转的Activity添加配置

android:name=".MainActivity"

android:label="@string/app_name"

android:theme="@style/AppTheme.NoActionBar">

3.在配置好的Activity里即可获取外部跳转的参数信息。

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Intent intent =getIntent();

Log.e(TAG, "scheme:" +intent.getScheme());

Uri uri =intent.getData();

Log.e(TAG, "scheme: "+uri.getScheme());

Log.e(TAG, "host: "+uri.getHost());

Log.e(TAG, "port: "+uri.getPort());

Log.e(TAG, "path: "+uri.getPath());

Log.e(TAG, "queryString: "+uri.getQuery());

Log.e(TAG, "queryParameter: "+uri.getQueryParameter("key"));

}

}

4.在浏览器中或者通过另外一个应用的WebView.loadUrl()方法访问test.html,可以看到我们的应用会自动启动,在控制台可以看到log信息。

E/MainActivity: scheme:myscheme

E/MainActivity: scheme: myscheme

E/MainActivity: host: www.orangecpp.com

E/MainActivity: port: 80

E/MainActivity: path: /mypath

E/MainActivity: queryString: key=mykey

E/MainActivity: queryParameter: mykey

大功告成!现在你可以根据此方法做更加复杂的操作了,比如在Activity里获取到path参数,根据path的不同跳转到不同的Activity,同时可以传query的参数进行相应的操作处理。

android应用自动打开网页,Android 使用Scheme实现从网页启动APP相关推荐

  1. android安装自动打开网页,Android调用系统自带浏览器打开网页的实现方法

    Android调用系统自带浏览器打开网页的实现方法 在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接.只需要传入一个uri,可以是链接地址. 启动android默认浏览器 在A ...

  2. android studio自动设置权限,android studio打包,安装后权限都没有默认打开,如何设置打开?...

    android studio打包,安装后权限都没有默认打开,如何设置打开?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ...

  3. Android Wifi自动打开并连接

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 转自:http://blog.csdn.net/yangwen123/article/details/9996 ...

  4. android系统自动构建,[系统集成] Android 自动构建系统

    一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包 android 的打包一 ...

  5. android activity从新打开,【Android开发-8】生命周期,Activity中打开另一个Activity

    前言:生命中有不少人陪伴本身走过一辈子中的某段旅程,仅仅是有些人仅仅是某阶段出现,有些人却陪伴本身很是久.就像小学.中学.高中.大学,那些之前觉得会长久拥有的,当经历过天涯各地地忙碌于生活,或如意.或 ...

  6. android 图片自动裁剪图片,Android图片选择到裁剪之步步深坑 – 简书

    我的问题已经解决,查阅了几十篇相关文章,换了数种解决方案,最终解决,虽然不是按照本文来的,但关闭窗口的时候发现本文算是系统,特此转载. 最近在自己的项目里实现了一个头像选择的功能,就是先从相册里选取一 ...

  7. Android Studio自动排版格式化(android排版和xml排版)

    Android Studio自动排版格式化 今天自己想让Android Studio软件自动格式化排版,结果搜了一下,都说是Ctrl + Alt + L 结果不行 后面自已经过网上一些提示和自己探索终 ...

  8. android编程 自动裁剪图片,Android编程实现调用相册、相机及拍照后直接裁剪的方法...

    本文实例讲述了Android编程实现调用相册.相机及拍照后直接裁剪的方法.分享给大家供大家参考,具体如下: package com.cvte.health.phone; import java.io. ...

  9. android程序自动卸载软件,Android应用静默安装和卸载

    App的静默安装和卸载 Android系统本身提供了安装卸载功能,但是api接口是@hide的,不是公开的接口,所以在应用级别 是无法实现静默安装和卸载的,要实现静默安装和卸载需要是系统应用,要有系统 ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装lua5.2
  2. windows 技术篇-判断某个ip地址相对于自己的主机是内网ip还是外网ip实例演示
  3. mysql的配置和启动命令
  4. OpenCV 拉普拉斯算子Laplace Operator
  5. php 微信定位,微信企业号(服务号)坐标定位发生偏移解决方案记录( 附PHP代码)...
  6. Maven+Mybatis+Spring+SpringMVC实现分页
  7. vue 数组重复,循环报错
  8. html怎么设背景颜色加上文字,怎么给视频添加文字 视频底部加文字,设置文字背景颜色、文字显示时间...
  9. flash代替epcs
  10. 证明三角形中cosA^2+cosB^2+cosC^2=1-2cosAcosBcosC
  11. 用计算机撩人套路,各种撩人的套路句子40句
  12. webstorm下载后打不开改怎么办
  13. ionic安卓打印终极解决方案,支持USB打印
  14. winimage使用教程
  15. 打包 压缩 解压缩命令
  16. 找漏洞赚外快?给ChatGPT挑毛病,最高奖励14万
  17. 美国加州伯克利大学计算机专业排名,美国加州大学伯克利分校计算机专业排名...
  18. 机器人 零境交错吧_电击文库零境交错角色培养攻略 角色培养方法详解
  19. 服务器无线密码是什么原因,有密码为什么连不上wifi
  20. 台式机计算机图标不见了,win7系统电脑右下角无线网络连接图标不见了怎么办-台式电脑怎么设置无线网络...

热门文章

  1. jQuery学习笔记——筛选元素集合
  2. linux下查看cpu信息
  3. 最近在我的python博客上花时间!
  4. 弄了个Gmail,觉得不适合我
  5. viewpager fragment FragmentStatePagerAdapter数据删除后更新界面
  6. html5翻卡片游戏,用 JavaScript 写一个卡片小游戏
  7. auto cad 打印颜色变浅_CAD制图软件中如何设置CAD打印样式表(CTB)?
  8. oracle 闪查询,Oracle的回闪查询
  9. android dialogfragment style,Android DialogFragment 使用
  10. python怎么安装json_python里面怎么安装json包