android - 如何通过在android中使用agora sdk在onFileMessageReceived中的给定路径中下载文件
问题描述
接收端代码
@Override
public void onFileMessageReceivedFromPeer(RtmFileMessage rtmFileMessage, String s) {
runOnUiThread(() -> {
if (s.equals(toProfID)) {
// String path = context.getFilesDir().getAbsolutePath() + "/" + rtmFileMessage.getFileName();
final String cacheFile = getCacheFile(context, rtmFileMessage.getFileName());
Log.d("onFileMessageReceived", cacheFile);
RtmRequestId requestId = new RtmRequestId();
mRtmClient.downloadMediaToFile(
rtmFileMessage.getMediaId(),
cacheFile,
requestId,
new ResultCallback<Void>() {
@Override
public void onSuccess(Void aVoid) {
massageList.add(0,new ChatItem(ChatItem.LayoutSix, "", rtmFileMessage.getFileName(), cacheFile, Time(), false));
chatAdapter.notifyDataSetChanged();
recyclerView_list.scrollToPosition(0);
}
@Override
public void onFailure(ErrorInfo errorInfo) {
Log.d("onFailure", "onFileMessageReceived" + errorInfo.toString());
}
}
);
}
});
}
路径如下
public static String getCacheFile(Context context, String id) {
File parent = new File(context.getCacheDir(), CACHE_DIR);
if (!parent.exists()) {
parent.mkdirs();
}
return new File(parent, id).getAbsolutePath();
}
无法从媒体 ID 下载此文件
**想下载recived文件。我打开这个文件是尊重甲酸盐的。.pdf 已打开,但实际上文件未打开。我不知道问题**
解决方案
使用此代码进行下载
public static String getCacheFile(Context context, String id) {
File parent = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS),
"YourAppDirectory");
if (!parent.exists()) {
parent.mkdirs();
}
return new File(parent, id).getAbsolutePath();
}
}
推荐阅读
- c# - 我到底需要写什么来为这个着色器添加发射贴图的能力
- php - 在 php 文件之间发送 $_POST 数据
- python - 带有对象 heappush 的 Python 优先级队列不支持对象之间的“>”
- little-man-computer - 输出一个序列
- docker - 错误:-bash:wget:找不到命令 - 可视代码 - Docker 终端
- c++ - C++:catch(...) 是否会遗漏任何异常
- winforms - 如何检查所选行在 DataGridView 中的哪个类
- javascript - 检查常量类型而不加宽类型?
- mysql - SET 的 SQL 查询失败
- ios - mailto:iOS 14 中的方案和自定义邮件客户端