当前位置: 首页 > 工具软件 > DeepLink SDK > 使用案例 >

Android中DeepLink的使用

太叔睿
2023-12-01

一、引言

在做安卓项目时,如果遇到需要把项目中的商品连接分享到微信或者微博,然后通过点击连接地址到对应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界面
 类似资料: