android - Android - WhatsApp:贴纸未显示
问题描述
我正在按照本指南构建贴纸应用程序: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.javareadContentFile()
更改了和fetchFile()
*,因此贴纸是从内部存储而不是资产中获取的。
解决方案
我有它的工作!
所有功劳归功于Meikiem:他对他的回答的评论为我指明了正确的方向
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);
}
推荐阅读
- ansible - 将 Ansible 输出拆分为 2 个不同的字符串
- apache - .htaccess 将 foo.com/account 重写为 my.foo.com URL
- ruby - 如何遍历这个 Ruby 对象?
- sql - 在LINQ中使用group by时如何使用order by
- node.js - ng build run 命令失败,并出现 Angular.json 错误未找到
- angularjs - 发出 index-hml-webpack-plugin EISDIR:对目录的非法操作,读取
- python - 打开带参数的本地 HTML
- amazon-web-services - Oracle 云基础设施 - 什么是 AWS CloudFormation 模板的等效组件
- azure - 如何在 Device Provisioning Service 注册列表中映射 IoTHub?- 注册状态“未分配”
- c++ - istream_iterator 复制示例一直在等待输入