Android即时应用:是否可以从一个即时功能导航到其他子即时功能

时间:2017-12-29 14:01:21

标签: android-instant-apps

我打算将当前的应用迁移到即时应用。所以我想知道是否可以从一个子即时功能模块导航到另一个即时功能模块。例如,我可能在一个详细信息功能,其中包含有关产品的必要信息,因此如果用户有兴趣购买该产品,那么我可以导航用户到支付功能模块(谷歌支付api目前不能满足我的目的,因为业务规则)即时模块目前支持这种导航吗?

2 个答案:

答案 0 :(得分:5)

当然这是支持的,否则使用即时应用程序非常有限。

您必须使用AppLink打开功能模块。拨打电话后,Android将根据需要下载该功能。

例如,这是Google Samples中使用的功能打开详细信息功能的流程。

创建意图:

@NonNull
private static Intent getDetailActivityStartIntent(Context context,
                                                   int position,
                                                   PhotoViewHolder holder) {
    final Intent intent = new Intent(Intent.ACTION_VIEW,
            Uri.parse("https://multi-feature.instantappsample.com/detail/" + position));
    intent.setPackage(context.getPackageName());
    intent.addCategory(Intent.CATEGORY_BROWSABLE);

    TextView author =
            holder.itemView.findViewById(com.example.android.unsplash.base.R.id.author);

    // Working around unboxing issues with multiple dex files on platforms prior to N.
    intent.putExtra(IntentUtil.SELECTED_ITEM_POSITION, position);
    intent.putExtra(IntentUtil.FONT_SIZE, author.getTextSize());
    intent.putExtra(IntentUtil.PADDING,
            new Rect(author.getPaddingLeft(),
                    author.getPaddingTop(),
                    author.getPaddingRight(),
                    author.getPaddingBottom()));
    intent.putExtra(IntentUtil.TEXT_COLOR, author.getCurrentTextColor());
    return intent;
}

开始:

final Intent intent = getDetailActivityStartIntent(activity, position, pvh);
final ActivityOptions activityOptions = getActivityOptions(pvh);
activity.startActivityForResult(intent, IntentUtil.REQUEST_CODE, 
    activityOptions.toBundle());

结果的完成与非即时应用程序相同。

在DetailActivity中设置结果并完成它。将结果输入MainActivity的onActivityResult。

答案 1 :(得分:1)

是的,Android Instant Applications支持从一个子即时功能模块导航到另一个即时功能模块。
(示例:详细信息功能 - >付款功能)

您可以参考google developers webpage

  • 始终考虑您的切入点。
  • 即时应用中的每个功能都至少有一个Activity充当该功能的入口点。
  • 此外,活动无法直接在即时应用中启动其他活动;相反,它必须请求与该活动相对应的URL地址。
  • 您可以通过构建INTENT(请求URL地址)进行导航;要打开付款功能(功能2),您可以从详细信息功能(功能1)中调用此功能。
  • 当用户从即时应用程序请求功能时,他们只会收到运行该特定功能所需的代码,不多也不少。
  • 通过这样做,您遵循入口点概念。

可以通过此GitHub链接检查与功能导航相关的示例代码示例。