如何通过在android中使用agora sdk在onFileMessageReceived中的给定路径中下载文件

Posted

技术标签:

【中文标题】如何通过在android中使用agora sdk在onFileMessageReceived中的给定路径中下载文件【英文标题】:how to download file in given path in onFileMessageReceived by using agora sdk in android 【发布时间】:2021-10-21 13:13:06 【问题描述】:

接收端代码

   @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 下载此文件

**想下载收到的文件。我打开这个文件是尊重甲酸盐的。 .pdf 已打开,但实际上文件未打开。我不知道问题**

【问题讨论】:

【参考方案1】:

使用此代码下载

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

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何通过在android中使用agora sdk在onFileMessageReceived中的给定路径中下载文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 中与 agora.io sdk 共享屏幕?

Agora Android SDK-开始聊天

使用 Agora SDK 的 Flutter Android 项目:'错误:找不到符号'

agora.io Android SDK:如何获取所有远程用户“uid”

在 android agora rtc sdk 中启用音频方法问题

如何使用 agora.io Unity SDK 检索频道用户列表