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

通过使用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的参数进行相应的操作处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值