我正在遵循此指南来构建贴纸应用程序:https://github.com/WhatsApp/stickers/tree/master/Android
我以不同的方式正在从Web服务而不是从资产中获取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()
*,以便从内部存储而不是从资产中获取标签。
答案 0 :(得分:0)
我已经开始工作了!
所有功劳归于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);
}