Java 如何从firebase加载WhatsApp标签?
问题描述 如何从firebase加载标签包 链接 我已经经历过了-Java 如何从firebase加载WhatsApp标签?,java,Java,问题描述 如何从firebase加载标签包 链接 我已经经历过了- 好吧,在从firebase加载标签之前,您必须创建一个包含标签属性、提供程序和更多内容的类(您可以很容易地知道如何从firebase检索数据,对于任何数据都是一样的,所以我将跳过这一步) 动态WAStickers应用程序应具有以下特征: 内容提供商提供必要的详细信息 它应该向Whatsapp发送一份意向书,分享所有贴纸包装的必要细节 图像必须采用(或转换为)webp格式 为什么它应该有内容提供商? 内容提供者是位于应用程序及
好吧,在从firebase加载标签之前,您必须创建一个包含标签属性、提供程序和更多内容的类(您可以很容易地知道如何从firebase检索数据,对于任何数据都是一样的,所以我将跳过这一步) 动态WAStickers应用程序应具有以下特征:
- 内容提供商提供必要的详细信息
- 它应该向Whatsapp发送一份意向书,分享所有贴纸包装的必要细节
- 图像必须采用(或转换为)webp格式
@Override
public String getType(@NonNull Uri uri) {
final int matchCode = MATCHER.match(uri);
switch (matchCode) {
case METADATA_CODE:
return "vnd.android.cursor.dir/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + METADATA;
case METADATA_CODE_FOR_SINGLE_PACK:
return "vnd.android.cursor.item/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + METADATA;
case STICKERS_CODE:
return "vnd.android.cursor.dir/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + STICKERS;
case STICKERS_ASSET_CODE:
return "image/webp";
case STICKER_PACK_TRAY_ICON_CODE:
return "image/png";
default:
throw new IllegalArgumentException("Unknown URI: " + uri);
}
}
要向WhatsApp提供有关StickPack的必要信息,您需要创建一个名为StickPack的类,该类将包含以下参数
class StickerPack implements Parcelable {
String identifier;
String name;
String publisher;
String trayImageFile;
final String publisherEmail;
final String publisherWebsite;
final String privacyPolicyWebsite;
final String licenseAgreementWebsite;
String iosAppStoreLink;
private List<Sticker> stickers;
private long totalSize;
String androidPlayStoreLink;
private boolean isWhitelisted;
StickerPack(String identifier, String name, String publisher, String trayImageFile, String publisherEmail, String publisherWebsite, String privacyPolicyWebsite, String licenseAgreementWebsite) {
this.identifier = identifier;
this.name = name;
this.publisher = publisher;
this.trayImageFile = trayImageFile;
this.publisherEmail = publisherEmail;
this.publisherWebsite = publisherWebsite;
this.privacyPolicyWebsite = privacyPolicyWebsite;
this.licenseAgreementWebsite = licenseAgreementWebsite;
}
}
在上面的方法中,我们向MATCHER对象添加了一个Uri模式,现在我们需要匹配该模式并返回准确的Uri,该Uri将显示标签数据在设备上的位置。接下来,WhatsApp命中的Url被传递到getType函数,以将其与Uri匹配,并返回数据在设备上的特定位置
@Override
public String getType(@NonNull Uri uri) {
final int matchCode = MATCHER.match(uri);
switch (matchCode) {
case METADATA_CODE:
return "vnd.android.cursor.dir/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + METADATA;
case METADATA_CODE_FOR_SINGLE_PACK:
return "vnd.android.cursor.item/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + METADATA;
case STICKERS_CODE:
return "vnd.android.cursor.dir/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + STICKERS;
case STICKERS_ASSET_CODE:
return "image/webp";
case STICKER_PACK_TRAY_ICON_CODE:
return "image/png";
default:
throw new IllegalArgumentException("Unknown URI: " + uri);
}
}
接下来,根据Url,我们调用查询方法,该方法将匹配Uri并返回特定Uri的游标对象
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
final int code = MATCHER.match(uri);
if (code == METADATA_CODE) {
return getPackForAllStickerPacks(uri);
} else if (code == METADATA_CODE_FOR_SINGLE_PACK) {
return getCursorForSingleStickerPack(uri);
} else if (code == STICKERS_CODE) {
return getStickersForAStickerPack(uri);
} else {
throw new IllegalArgumentException("Unknown URI: " + uri);
}
}
游标是迭代器,提供对内容提供者数据的读/写访问
请参阅中的GetPackForAllStickPacks()、getCursorForSingleStickerPack()和GetStickPackinfo()函数。了解游标对象提供的数据类型
祝贺你现在您已经达到了第一个里程碑。到目前为止,我们了解到:
- 什么是内容提供商
- 我们通过ContentProviders发送什么类型的数据
- 我们如何处理Uri以提供特定的游标对象
@Override
public String getType(@NonNull Uri uri) {
final int matchCode = MATCHER.match(uri);
switch (matchCode) {
case METADATA_CODE:
return "vnd.android.cursor.dir/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + METADATA;
case METADATA_CODE_FOR_SINGLE_PACK:
return "vnd.android.cursor.item/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + METADATA;
case STICKERS_CODE:
return "vnd.android.cursor.dir/vnd." + BuildConfig.CONTENT_PROVIDER_AUTHORITY + "." + STICKERS;
case STICKERS_ASSET_CODE:
return "image/webp";
case STICKER_PACK_TRAY_ICON_CODE:
return "image/png";
default:
throw new IllegalArgumentException("Unknown URI: " + uri);
}
}
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
final int code = MATCHER.match(uri);
if (code == METADATA_CODE) {
return getPackForAllStickerPacks(uri);
} else if (code == METADATA_CODE_FOR_SINGLE_PACK) {
return getCursorForSingleStickerPack(uri);
} else if (code == STICKERS_CODE) {
return getStickersForAStickerPack(uri);
} else {
throw new IllegalArgumentException("Unknown URI: " + uri);
}
}