Android即时应用和App LInks

时间:2017-10-14 08:51:02

标签: android deep-linking applinks android-instant-apps

现在看来Android 5.0或更高版本支持Android Instant Apps。但是,App Links(我理解Instant Apps依赖)仅在6.0或更高版本中受支持。我在网上搜索过但无法找到明确的答案。

一般来说,我们希望支持即时应用程序,使用应用程序链接在不同功能模块中的活动之间导航,但在大多数情况下还需要使用这些模块来构建适用于以下版本的可安装apk 5.0
这是否意味着代码需要检查API级别并根据版本使用不同的方法(例如,如果< 5.0),则以明确的意图调用startActivity

这是我在Instant Apps documentation中找到的信息:

  

您的应用的即时和可安装版本都必须实现    Android 6.0 中引入的Android应用链接功能。应用链接   提供将URL连接到离散的主要机制   您应用内的活动。

  

即时应用无法直接在其他功能中启动活动;   相反,它必须请求与另一个对应的URL地址   其他功能的入口点活动。

然后从https://developer.android.com/topic/instant-apps/index.html

  

Android Instant Apps支持最新的Android设备   通过Android O Android 5.0 (API级别21)

1 个答案:

答案 0 :(得分:4)

Android App Links只是为Android系统提供了一种方式,可以将您的http深层链接与您的应用程序进行唯一关联(不显示消除歧义对话框,供用户选择打开链接的应用程序)。它没有为您提供任何新的API来启动活动。因此,无论如何你都需要调用startActivity。如果要打开属于另一个即时应用程序功能模块的活动,则只需使用隐式意图。

对于同一功能模块内部的导航(或者如果您的Instant App仅由one base feature组成),可以自由使用明确的意图。

  

现在看起来支持Android Instant Apps   Android 5.0或更高版本。但是,App Links(我明白这一点   Instant Apps依赖于)仅在6.0或更高版本中支持

是的,这是真的。但是,即时应用程序主管(由Google Play服务内部安装并用于在8.0之前在Android上运行即时应用程序)将确保注册到已验证的即时应用程序域的应用程序链接将直接转发到您的即时应用程序。

  

这是否意味着代码需要检查API级别并使用   取决于版本的不同方法(例如,呼叫startActivity   如果< 5.0)

是的,如果你想100%确定你的用户在浏览你的app的活动时不会被显示消除歧义(又名"选择器")对话框like this (而且很可能你想防止这种奇怪的用户体验)。如果使用依赖注入,则可以在应用程序中使用用于导航的界面,然后使用可安装和即时应用程序的不同实现。

interface Navigation {
   void startActivityFromModuleA();
   void startActivityFromModuleB();
   …
}

class InstallableAppNavigation implements Navigation {
   public void startActivityFromModuleA() {
       // explicit intent
       Intent intent = new Intent(context, ActivityFromModuleA.class);
       context.startActivity(intent);
   }
   …
}

class InstantAppNavigation implements Navigation {
   public void startActivityFromModuleA() {
       // implicit intent
       Intent intent = new Intent(Intent.ACTION_VIEW,  
               Uri.parse("https://your.app.com/moduleA/smth"));
       context.startActivity(intent);
   }
   …
}