Try to export avatar as png

This commit is contained in:
Phillip Thelen 2023-08-24 13:28:56 +02:00
parent 705bbb93b7
commit 4e7496a300

View file

@ -1,12 +1,17 @@
package com.habitrpg.android.habitica.ui.activities
import android.R.attr.bitmap
import android.R.attr.name
import android.content.ContentValues
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.content.res.Configuration
import android.graphics.Bitmap
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.view.LayoutInflater
import android.view.Menu
@ -16,6 +21,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager
import com.habitrpg.android.habitica.HabiticaApplication
@ -36,9 +42,13 @@ import com.habitrpg.common.habitica.helpers.ExceptionHandler
import com.habitrpg.common.habitica.helpers.LanguageHelper
import com.habitrpg.common.habitica.helpers.launchCatching
import kotlinx.coroutines.launch
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
import java.util.Date
import javax.inject.Inject
abstract class BaseActivity : AppCompatActivity() {
@Inject
lateinit var notificationsManager: NotificationsManager
@ -232,11 +242,31 @@ abstract class BaseActivity : AppCompatActivity() {
sharingIntent.putExtra(Intent.EXTRA_TEXT, message)
}
if (image != null) {
val path = MediaStore.Images.Media.insertImage(this.contentResolver, image, "${(Date())}", null)
if (path != null) {
val uri = Uri.parse(path)
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri)
val fos: OutputStream
val uri: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val resolver = contentResolver
val contentValues = ContentValues()
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, "${Date()}.png")
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/png")
contentValues.put(
MediaStore.MediaColumns.RELATIVE_PATH,
Environment.DIRECTORY_PICTURES
)
uri =
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues) ?: return
fos = resolver.openOutputStream(uri) ?: return
} else {
val imagesDir =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
.toString()
val file = File(imagesDir, "${Date()}.png")
uri = file.absoluteFile.toUri()
fos = FileOutputStream(file)
}
image.compress(Bitmap.CompressFormat.PNG, 100, fos)
fos.close()
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri)
}
startActivity(Intent.createChooser(sharingIntent, getString(R.string.share_using)))
}