安卓-WhatsApp:贴纸不显示



我遵循本指南构建贴纸应用程序:https://github.com/WhatsApp/stickers/tree/master/Android

我用另一种方式做的是,从web服务中获取json、托盘图像和贴纸文件,而不是从资产中获取。

一切都很好(包括将贴纸添加到whatsapp(,除了一件事:webp贴纸没有显示在包详细信息视图(sticker_pack_details.xml(中。

我正在改变贴纸文件的加载位置,就像这个一样

贴纸预览适配器.java

public void onBindViewHolder(@NonNull final StickerPreviewViewHolder stickerPreviewViewHolder, final int i)}
{
stickerPreviewViewHolder.stickerPreviewView.setImageResource(errorResource);
//stickerPreviewViewHolder.stickerPreviewView.setImageURI(StickerPackLoader.getStickerAssetUri(stickerPack.identifier, stickerPack.getStickers().get(i).imageFileName));
String filename = "/data/user/0/com.example.samplestickerapp/files/" + stickerPack.identifier + "/" + stickerPack.getStickers().get(i).imageFileName;
android.net.Uri stickerURI = android.net.Uri.parse(filename);
stickerPreviewViewHolder.stickerPreviewView.setImageURI(stickerURI);
}

注释行从资产中获取贴纸,但我已经更改了它,所以贴纸是从内部存储中获取的。

我是错过了什么还是找错地方了?

我还从StickerContentProvider.java更改了readContentFile()fetchFile()*,因此贴纸是从内部存储而不是资产中提取的。

*如下所述:https://github.com/WhatsApp/stickers/blob/master/Android/README.md#expose-通过内容提供商内部存储为贴纸的文件

我已经开始工作了!!

所有的功劳都归于梅基姆:他对自己答案的评论为我指明了正确的方向

public void onBindViewHolder(@NonNull final StickerPreviewViewHolder stickerPreviewViewHolder, final int i)}
{
stickerPreviewViewHolder.stickerPreviewView.setImageResource(errorResource);
//stickerPreviewViewHolder.stickerPreviewView.setImageURI(StickerPackLoader.getStickerAssetUri(stickerPack.identifier, stickerPack.getStickers().get(i).imageFileName));
String filename = "/data/user/0/com.example.samplestickerapp/files/" + stickerPack.identifier + "/" + stickerPack.getStickers().get(i).imageFileName;
//Instead of this:
//android.net.Uri stickerURI = android.net.Uri.parse(filename);
//I had to do this:
java.io.File file = new java.io.File(filename);
android.net.Uri stickerURI = android.net.Uri.fromFile(file);
stickerPreviewViewHolder.stickerPreviewView.setImageURI(stickerURI);
}

最新更新