访问 android 应用程序中的资产文件

Acces to Assets file in android application

我的申请有问题。 我尝试访问 Assets 文件夹并在目录中下载一些 PDF 文件。

当我在我的 galaxy S9 (API 28) 上尝试代码时,它工作得很好。 但是当我在我的 Galaxy S2 选项卡 (API24) 上尝试代码时,没有任何反应。

我使用此代码访问和下载 pdf 文件:

        public void copyAssets(Context context)
        {
            DownloadComplete = false;
            Log.d("tag", "Here 1 ?");
            AssetManager assetManager = context.getAssets();
            Log.d("tag", "Here 2 ?");
            String[] files = null;
            Log.d("tag", "Here 3?");
            try
            {
                files = assetManager.list(resAventure + "/");
                Log.d("tag", "Here  4?");
            } catch (IOException e) {
                Log.d("tag", "Failed to get asset file list.", e);
            }
            if (files != null) for (String filename : files)
            {
                Log.d("tag", "Here 5?");
                InputStream in = null;
                OutputStream out = null;
                try {
                    Log.d("tag", "Here 6?");
                    in = assetManager.open(resAventure + "/" + filename);
                    out = new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/Escape/" + resAventure + "/" + filename);
                    copyFile(in, out);
                    Toast.makeText(getApplicationContext(), "Téléchargement effectué sur l'appareil", Toast.LENGTH_LONG).show();
                    DownloadComplete = true;

                } catch(IOException e) {
                    Log.d("tag", "Failed to copy asset file: " + filename , e);
                }
                finally
                {
                    if (in != null)
                    {
                        try
                        {
                            in.close();
                            in = null;
                        } catch (IOException e)
                        {
                            Log.d("tag", "Failed A", e);
                        }
                    }
                    if (out != null)
                    {
                        try {
                            out.flush();
                            out.close();
                            out = null;
                        } catch (IOException e)
                        {
                            Log.d("tag", "Failed B", e);
                        }
                    }
                }
            }
        }
        public  void copyFile(InputStream in, OutputStream out) throws IOException
        {
            byte[] buffer = new byte[1024];
            int read;
            while((read = in.read(buffer)) != -1){
                out.write(buffer, 0, read);
            }
        }

在API28 一切正常。但是在 API24 我只有在日志中:

D/ViewRootImpl@45de4c3[documents]: ViewPostImeInputStage processPointer 1
D/tag: Here 1 ?
Here 2 ?
Here 3?
D/tag: Here  4?
D/ViewRootImpl@45de4c3[documents]: ViewPostImeInputStage processPointer 0 

资产文件夹的两个 API 之间有区别吗? 我不明白为什么它只工作一次...

somoene 可以帮我吗?

找到了

我替换: 文件 = assetManager.list(resAventure + "/"); 经过 文件 = assetManager.list(resAventure);