forked from geode-sdk/android-launcher
make permission requesting use launchers and add callback
This commit is contained in:
1 parent
433d6a0f46
commit
e164b87436
2 files changed
+23
-15
No files matched your search
@@ -45,17 +45,11 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL
|
|||||||
private var mHasWindowFocus = false
|
private var mHasWindowFocus = false
|
||||||
private var mReceiver: BroadcastReceiver? = null
|
private var mReceiver: BroadcastReceiver? = null
|
||||||
|
|
||||||
companion object {
|
|
||||||
var instance: GeometryDashActivity? = null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
setupUIState()
|
setupUIState()
|
||||||
|
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
instance = this
|
|
||||||
|
|
||||||
// return back to main if Geometry Dash isn't found
|
// return back to main if Geometry Dash isn't found
|
||||||
if (!LaunchUtils.isGeometryDashInstalled(packageManager)) {
|
if (!LaunchUtils.isGeometryDashInstalled(packageManager)) {
|
||||||
returnToMain()
|
returnToMain()
|
||||||
@@ -319,7 +313,6 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL
|
|||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
unregisterReceivers()
|
unregisterReceivers()
|
||||||
FMOD.close()
|
FMOD.close()
|
||||||
instance = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun resumeGame() {
|
private fun resumeGame() {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ object GeodeUtils {
|
|||||||
private lateinit var openDirectoryResultLauncher: ActivityResultLauncher<Uri?>
|
private lateinit var openDirectoryResultLauncher: ActivityResultLauncher<Uri?>
|
||||||
private lateinit var openFilesResultLauncher: ActivityResultLauncher<GeodeOpenFilesActivityResult.OpenFileParams>
|
private lateinit var openFilesResultLauncher: ActivityResultLauncher<GeodeOpenFilesActivityResult.OpenFileParams>
|
||||||
private lateinit var saveFileResultLauncher: ActivityResultLauncher<GeodeSaveFileActivityResult.SaveFileParams>
|
private lateinit var saveFileResultLauncher: ActivityResultLauncher<GeodeSaveFileActivityResult.SaveFileParams>
|
||||||
|
private lateinit var requestPermissionLauncher: ActivityResultLauncher<String>
|
||||||
|
|
||||||
fun setContext(activity: AppCompatActivity) {
|
fun setContext(activity: AppCompatActivity) {
|
||||||
this.activity = WeakReference(activity)
|
this.activity = WeakReference(activity)
|
||||||
@@ -77,6 +78,9 @@ object GeodeUtils {
|
|||||||
}
|
}
|
||||||
failedCallback()
|
failedCallback()
|
||||||
}
|
}
|
||||||
|
requestPermissionLauncher = activity.registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted ->
|
||||||
|
permissionCallback(isGranted)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@@ -257,19 +261,30 @@ object GeodeUtils {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getPermissionStatus(permission: String): Boolean {
|
fun getPermissionStatus(permission: String): Boolean {
|
||||||
return ContextCompat.checkSelfPermission(
|
return ContextCompat.checkSelfPermission(
|
||||||
GeometryDashActivity.instance?.applicationContext ?: return false,
|
activity.get()?.applicationContext ?: return false,
|
||||||
permission
|
permission
|
||||||
) == PackageManager.PERMISSION_GRANTED
|
) == PackageManager.PERMISSION_GRANTED
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun requestPermission(permission: String) {
|
fun requestPermission(permission: String): Boolean {
|
||||||
if (!getPermissionStatus(permission)) {
|
if (getPermissionStatus(permission)) {
|
||||||
ActivityCompat.requestPermissions(
|
permissionCallback(true)
|
||||||
GeometryDashActivity.instance!!,
|
return true
|
||||||
arrayOf(permission),
|
}
|
||||||
12345
|
|
||||||
)
|
activity.get()?.run {
|
||||||
|
try {
|
||||||
|
requestPermissionLauncher.launch(permission)
|
||||||
|
return true
|
||||||
|
} catch (e: ActivityNotFoundException) {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("KotlinJniMissingFunction")
|
||||||
|
external fun permissionCallback(granted: Boolean)
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user