【问题标题】:Android - WhatsApp: stickers not showingAndroid - WhatsApp:贴纸未显示
【发布时间】:2019-05-10 07:58:10
【问题描述】:

我正在按照本指南构建贴纸应用程序:https://github.com/WhatsApp/stickers/tree/master/Android

我以不同的方式做的是从网络服务而不是资产中获取 json、托盘图像和贴纸文件。

一切正常(包括将贴纸添加到 whatsapp),除了一件事:webp 贴纸未显示在包详细信息视图中 (sticker_pack_details.xml)。

我正在像这样更改贴纸文件的加载位置

StickerPreviewAdapter.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-files-that-are-stored-internally-as-stickers-through-contentprovider

【问题讨论】:

    标签: android whatsapp


    【解决方案1】:

    我已经成功了!!

    所有功劳归于Meikiem:他的comments 在他的回答中为我指明了正确的方向

    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);
    }
    

    【讨论】:

    • 如何将我的 web 服务 url 贴纸添加到 whatsapp?,如果有人知道与功能共享代码。
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 2019-07-16
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多