外部跳转APP

需求

广告推广、华为微服务;通过外部网页或者卡片跳转到我们的app指定界面。如果app已经存在打开app,app不存在跳转下载界面。

APP配置

       
            
                

                
            
            
            
                

                
                
                
                
                
            
            
        

scheme 、host 是必填项
android:path="/path"
android:port="8080"
根据需求进行添加

获取URL scheme中的值

        Uri uri = getIntent().getData();
        if (uri != null) {
            // 完整的url信息
            String url = uri.toString();
            Log.i(TAG, "url:" + uri);

            // scheme部分
            String scheme = uri.getScheme();
            Log.i(TAG, "scheme:" + scheme);

            // host部分
            String host = uri.getHost();
            Log.i(TAG, "host:" + host);

            // port部分
            int port = uri.getPort();
            Log.i(TAG, "port:" + port);

            // 访问路劲
            String path = uri.getPath();
            Log.i(TAG, "path:" + path);

            List pathSegments = uri.getPathSegments();

            // Query部分
            String query = uri.getQuery();
            Log.i(TAG, "query:" + query);

            //获取指定参数值
            String success = uri.getQueryParameter("success");
            Log.i(TAG, "success:" + success);
        }
}

通过web打开,核心参数scheme 和 host

1、创建一个html,把这个粘贴扔进去。如果安装了app就可以打开

打开app

2、这个可以配置下载链接,如果APP未安装会跳转下载链接地址
(根据需要自己修改,网上找的例子)

 Start or Download 

通过另外一个app打开

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("scheme://host"));
startActivity(intent);

可以try catch一下,出现Exception说明手机没有安装想打开的APP,进行其他处理或者提示。

华为微服务

用到的是deeplink链接,使用原理也是scheme

遇坑

scheme | host 大小写问题(亲测实坑)

scheme host 在浏览器里是不分大小写的,会统一转为小写。
所以不要再scheme、host里面写大写!!!
所以不要再scheme、host里面写大写!!!
所以不要再scheme、host里面写大写!!!

你可能感兴趣的:(外部跳转APP)