110 lines
4.2 KiB
Kotlin
110 lines
4.2 KiB
Kotlin
/*
|
|
* Copyright (c) 2020 Hemanth Savarla.
|
|
*
|
|
* Licensed under the GNU General Public License v3
|
|
*
|
|
* This is free software: you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details.
|
|
*
|
|
*/
|
|
package code.name.monkey.retromusic.activities
|
|
|
|
import android.Manifest
|
|
import android.content.Intent
|
|
import android.content.pm.PackageManager
|
|
import android.content.res.ColorStateList
|
|
import android.net.Uri
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import android.provider.Settings
|
|
import android.view.View
|
|
import androidx.annotation.RequiresApi
|
|
import androidx.core.text.HtmlCompat
|
|
import code.name.monkey.appthemehelper.ThemeStore
|
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
|
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
|
|
import code.name.monkey.retromusic.databinding.ActivityPermissionBinding
|
|
import code.name.monkey.retromusic.extensions.accentBackgroundColor
|
|
import code.name.monkey.retromusic.extensions.setStatusBarColorAuto
|
|
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
|
|
import code.name.monkey.retromusic.extensions.show
|
|
import code.name.monkey.retromusic.util.RingtoneManager
|
|
|
|
class PermissionActivity : AbsMusicServiceActivity() {
|
|
private lateinit var binding: ActivityPermissionBinding
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
binding = ActivityPermissionBinding.inflate(layoutInflater)
|
|
setContentView(binding.root)
|
|
setStatusBarColorAuto()
|
|
setTaskDescriptionColorAuto()
|
|
setupTitle()
|
|
|
|
binding.storagePermission.setButtonClick {
|
|
requestPermissions()
|
|
}
|
|
if (VersionUtils.hasMarshmallow()) binding.audioPermission.show()
|
|
binding.audioPermission.setButtonClick {
|
|
if (RingtoneManager.requiresDialog(this@PermissionActivity)) {
|
|
val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
|
|
intent.data = Uri.parse("package:" + applicationContext.packageName)
|
|
startActivity(intent)
|
|
}
|
|
}
|
|
binding.finish.accentBackgroundColor()
|
|
binding.finish.setOnClickListener {
|
|
if (hasPermissions()) {
|
|
startActivity(
|
|
Intent(this, MainActivity::class.java).addFlags(
|
|
Intent.FLAG_ACTIVITY_NEW_TASK or
|
|
Intent.FLAG_ACTIVITY_CLEAR_TASK
|
|
)
|
|
)
|
|
finish()
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun setupTitle() {
|
|
val color = ThemeStore.accentColor(this)
|
|
val hexColor = String.format("#%06X", 0xFFFFFF and color)
|
|
val appName = HtmlCompat.fromHtml(
|
|
"Hello there! <br>Welcome to <b>Retro <span style='color:$hexColor';>Music</span></b>",
|
|
HtmlCompat.FROM_HTML_MODE_COMPACT
|
|
)
|
|
binding.appNameText.text = appName
|
|
}
|
|
|
|
@RequiresApi(Build.VERSION_CODES.M)
|
|
override fun onResume() {
|
|
if (hasStoragePermission()) {
|
|
binding.storagePermission.checkImage.visibility = View.VISIBLE
|
|
binding.storagePermission.checkImage.imageTintList =
|
|
ColorStateList.valueOf(ThemeStore.accentColor(this))
|
|
}
|
|
if (hasAudioPermission()) {
|
|
binding.audioPermission.checkImage.visibility = View.VISIBLE
|
|
binding.audioPermission.checkImage.imageTintList =
|
|
ColorStateList.valueOf(ThemeStore.accentColor(this))
|
|
}
|
|
|
|
super.onResume()
|
|
}
|
|
|
|
@RequiresApi(Build.VERSION_CODES.M)
|
|
private fun hasStoragePermission(): Boolean {
|
|
return checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
|
|
}
|
|
|
|
@RequiresApi(Build.VERSION_CODES.M)
|
|
private fun hasAudioPermission(): Boolean {
|
|
return Settings.System.canWrite(this)
|
|
}
|
|
}
|