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
)
}
它被弃用并不重要。这个函数完成它的工作。使用它。没有别的了。