Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不推荐使用Environment.getExternalStorageDirectory()_Android_Methods_Directory_Storage - Fatal编程技术网

Android 不推荐使用Environment.getExternalStorageDirectory()

Android 不推荐使用Environment.getExternalStorageDirectory(),android,methods,directory,storage,Android,Methods,Directory,Storage,我想从手机存储器中获取目录 这是我的代码: //"storage/emulated/0" public String ROOT_DIR = Environment.getExternalStorageDirectory().getPath(); public String PICTURES = ROOT_DIR + "/Pictures"; public String CAMERA = ROOT_DIR + "/DCIM/camera"

我想从手机存储器中获取目录 这是我的代码:

//"storage/emulated/0"
public String ROOT_DIR = Environment.getExternalStorageDirectory().getPath();
public String PICTURES = ROOT_DIR + "/Pictures";
public String CAMERA = ROOT_DIR + "/DCIM/camera";
}


我可以用什么来代替方法“getExternalStorageDirectory()”?

在api 29中,您需要使用
ContentResolver
,请参阅我的问题:

要从internet保存图像,您需要使用以下选项:

val url = URL(uRL)
val urlConnection = url.openConnection() as HttpURLConnection
urlConnection.requestMethod = "GET"
urlConnection.doOutput = true
urlConnection.readTimeout = 60000
urlConnection.connectTimeout = 20000
urlConnection.connect()
val fileName = "image.png"
val uri = insertToContentResolver(context, fileName, File(fileName).extension)
val outputStream = context.contentResolver.openOutputStream(uri)

val inputStream = urlConnection.inputStream

val buffer = ByteArray(1024)
var bufferLength: Int //used to store a temporary size of the buffer
while (inputStream.read(buffer).also { bufferLength = it } > 0) {
    outputStream.write(buffer, 0, bufferLength)
}
outputStream.close()



fun insertToContentResolver(
    context: Context,
    fileName: String,
    extension: String
): Uri? {
    val contentValues = ContentValues().apply {
        put(MediaStore.MediaColumns.DISPLAY_NAME, fileName)
        put(
            MediaStore.MediaColumns.MIME_TYPE,
            MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension)
        )
        put(
            MediaStore.MediaColumns.DATA,
            File(
                "${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).absolutePath}/${
                    context.getString(R.string.folder_name)}",
                fileName
            ).absolutePath
        )


    }

    return context.contentResolver.insert(
        MediaStore.Files.getContentUri("external"),
        contentValues
    )
}

它被弃用并不重要。这个函数完成它的工作。使用它。没有别的了。