如何在测试 Android 广播时包含额外的捆绑包?

How to include a bundle extra when testing Android broadcasts?

我目前正在尝试测试 Google 的 App Invites,但我很难测试 INSTALL_REFERRER 广播功能而不将应用程序放到 Play 商店

App Invite 广播意图需要一个名为 "com.google.android.gms.appinvite.REFERRAL_BUNDLE" 的额外捆绑包,它已在 AppInviteReferral 中签入,如下所示:

public static boolean hasReferral(Intent referralIntent) {
        return referralIntent != null && referralIntent.getBundleExtra("com.google.android.gms.appinvite.REFERRAL_BUNDLE") != null;
}

当使用 adb shell am broadcast ... 测试广播时,我们能做的最好的事情就是添加 extras,但是没有添加 bundle extra 的选项。 (documentation here)

有人知道如何将捆绑包作为广播的一部分吗?

在这个post 中说不可能通过adb 将bundle extra 放入。您可以编写简单的测试应用程序并发送您想要的应用程序邀请意图:

Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
intent.setPackage("your_package");
Bundle bundle = new Bundle();
bundle.putString("com.android.vending.INSTALL_REFERRER", "your_invite_id");
bundle.putString("com.google.android.gms.appinvite.DEEP_LINK", "your_deep_link");
intent.putExtra("com.google.android.gms.appinvite.REFERRAL_BUNDLE", bundle);
sendBroadcast(intent);

我已经用这种方式测试了 google app invite,但之前也尝试过通过 adb 发送 intent。