binding.qj.setOnClickListener {
//下载图片
Thread() {
kotlin.run {
var url = "http://mpapk.yexi.online/2.jpg"
var xiazai = saveFile2Gallery2(applicationContext, url)
println("-----------xiazai------------")
println(xiazai)
println("----------xiazai-------------")
}
}.start()
}
requestPermission()
}
// 保存图片到相册
fun saveFile2Gallery2(context: Context, url: String): Boolean {
val name = System.currentTimeMillis().toString()
val photoPath = Environment.DIRECTORY_DCIM + "/Camera"
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, name)
put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
put(MediaStore.MediaColumns.RELATIVE_PATH, photoPath)//保存路径
put(MediaStore.MediaColumns.IS_PENDING, true)
}
}
//返回出一个URI
val insert = context.contentResolver.insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
contentValues
) ?: return false
println("--------------------------")
println(insert)
println("--------------------------")
//这个打开了输出流 直接保存图片就好了
context.contentResolver.openOutputStream(insert).use { os ->
os ?: return false
var x = download(url, os)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
contentValues.put(MediaStore.MediaColumns.IS_PENDING, false)
}
return x
}
return false
}
private fun download(url: String, os: OutputStream): Boolean {
val url = URL(url)
(url.openConnection() as HttpURLConnection).also { conn ->
conn.requestMethod = "GET"
conn.connectTimeout = 5 * 1000
if (conn.responseCode == 200) {
conn.inputStream.use { ins ->
val buf = ByteArray(2048)
var len: Int
while (ins.read(buf).also { len = it } != -1) {
os.write(buf, 0, len)
}
os.flush()
}
return true
} else {
return false
}
}
}
/**
* request permission for the application
*/
private fun requestPermission() {
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.WRITE_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(
this,
Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
1
)
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
1
)
} else {
Log.i(LOG_TAG, "-----------------permission ok")
}
}
Android kotlin 保存网络图片到相册
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...