Android中DeepLink的使用

一、引言

在做安卓项目时,如果遇到需要把项目中的商品连接分享到微信或者微博,然后通过点击连接地址到对应app的相关页面中,这时就需要使用Android的deepLink技术。

二、集成步骤

原理:主要利用的是Intent的隐式机制

1.在对应项目的启动页面的AndroidManifest文件中添加如下的隐式过滤

<activity android:name=".WelcomeActivity">
    ......
  <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:scheme="com.zjbl.stock"
       />
  </intent-filter>
</activity>
对这一部分的解释

对于熟悉隐式Intent的部分,这部分代码应该不难理解。这里我们新增了一个标签,在里面加入了action,

category和data三部分内容。其中action和category部分要固定写成这个样子,我们不能修改的,

因为当你点击一个html链接时系统自动发出就是这样的action和category。

然后data部分就需要我们来自定义了,android:scheme用于指定协议,类似于http这样的东西,

这里我们指定成了com.example.androidtest,这是一个自定义的协议,指定成这样是为了避免

和其它的应用程序冲突,从而误把deep links链到人家的程序里去了。 除了android:scheme之外,

我们还可以通过android:host来指定域名,android:port来指定端口,android:path来指定路径,

这些属性都可以对deep links进行更多的限制,

要满足特定条件才能打开指定App。那这里我希望只要是使用com.example.androidtest协议的链接

就能打开我们的程序,因此就不对其他属性进行设置了。

2.在本地开启tomcat服务器,建立一个测试网页,在手机里打开该网页,在该网页上放一个连接

<a href="com.zjbl.stock://goodsId">Try Deep Links</a>
这里要注意网页中的连接与上面AndroidManifest文件中添加的data中的scheme要一致,否则掉不起该app
 
3.在WelcomeActivity中添加以下代码
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        if (intent != null) {
            Uri uri = intent.getData();
            String host = uri.getHost();
            if ("goodsId".equals(host)) {
                // 跳转到商品详情页面
            }
        }
    }
如果不添加goodsId字段,则可以打开对应的app,而不进入具体的界面去。
 
三、总结
总体而言,集成交简单,注意隐式intent的使用。
思考:1.不能通过分享的地址直接跳到对应的app中去,必须要先跳到一个共用页面中,在页面中点击链接到app中;
      2.没办法判断手机中没有安装app时,跳转到下载app界面
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值