【问题标题】:How to create a folder in internal storage like whatsapp without using getExternalStorageDirectory()?如何在不使用getExternalStorageDirectory()的情况下在whatsapp等内部存储中创建文件夹?
【发布时间】:2020-04-10 06:53:23
【问题描述】:

由于 getExternalStorageDirectory() 在 Android Level Q 中已被弃用,是否有替代方法?请提供一个使用它的示例。

编辑 1:我使用以下代码将相机流保存到存储中

            Image image = null;
            image  = reader.acquireLatestImage();
            ByteBuffer buffer = image.getPlanes()[0].getBuffer();
            byte[] bytes = new byte[buffer.capacity()];
            buffer.get(bytes);
            ContentValues values = new ContentValues();

            values.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis() / 1000);
            values.put(MediaStore.MediaColumns.DATE_TAKEN, System.currentTimeMillis());
            values.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);
            values.put(MediaStore.MediaColumns.IS_PENDING, true);
            values.put(MediaStore.MediaColumns.DISPLAY_NAME, "file_" + System.currentTimeMillis() + extension);
            Uri uri = getContentResolver().insert(contentUri, values);

            try {
                uri = save(bytes,uri);
                values.put(MediaStore.MediaColumns.IS_PENDING, false);
                getContentResolver().update(uri, values, null, null);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }finally {
                        if(image!=null)
                        {
                            image.close();
                        }
                    }

但这不会在按下相机按钮一次时将图像保存到存储中,在快速按下拍摄按钮两次时会将其保存到存储中。这里有错误吗?

【问题讨论】:

  • 您可以像this 一样进行操作。你可以下载文件。
  • @KasımÖzdemir 我已经使用了你的技术,但我遇到了一些错误。请参阅问题中的编辑 1 并回答。
  • 你能检查相机代码吗?为什么第一次不行,第二次怎么办。
  • 这里是否有任何错误,例如添加或更新 uri 或此处缺少的与 Mediastore 相关的一些内容?
  • 哦,错误仅在相机应用程序中。感谢您帮助@KasımÖzdemir 您的解决方案有效

标签: android


【解决方案1】:

检查 android sdk 版本。请使用getExternalFilesDir()

if (android.os.Build.VERSION.SDK_INT >= android.os. Build.VERSION_CODES.Q) {
   // only for up to android Q
   // Use getExternalFilesDir()
   ...
} else { 
   // Use getExternalStorageDirectory()
   ...
}

【讨论】:

  • 但是 getExternalFilesDir() 创建文件夹,如 Internal_Storage->Android->data->com.example.appname->files。我想创建类似 Internal_Storage->App_Name->图片或声音或视频的东西
  • 是的。但它使用 getExternalStorageDirectory() 从而导致我的手机出错,因为它有 android 10
猜你喜欢
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 2015-02-24
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多